Navigation Menu

Skip to content

Commit

Permalink
Add ability to handle errors
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Apr 15, 2015
1 parent c5a1974 commit 0bb2fa1
Showing 1 changed file with 21 additions and 3 deletions.
24 changes: 21 additions & 3 deletions lib/drndump/dump_client.rb
Expand Up @@ -20,7 +20,7 @@
module Drndump
class DumpClient
attr_reader :error_message
attr_writer :on_finish, :on_progress
attr_writer :on_finish, :on_progress, :on_error

def initialize(params)
@host = params[:host]
Expand All @@ -35,11 +35,15 @@ def initialize(params)

@on_finish = nil
@on_progress = nil
@on_error = nil
end

def run(options={}, &block)
extra_client_options = options[:client_options] || {}
client = Droonga::Client.new(client_options.merge(extra_client_options))
client.on_error = lambda do |error|
on_error(error)
end

n_dumpers = 0

Expand All @@ -53,9 +57,10 @@ def run(options={}, &block)
"body" => dump_params,
}
client.subscribe(dump_message) do |message|
@on_progress.call(message) if @on_progress
on_progress(message)
case message
when Droonga::Client::Error
on_error(message)
client.close
@error_message = message.to_s
else
Expand All @@ -64,6 +69,7 @@ def run(options={}, &block)
if message["statusCode"] != 200
client.close
error = message["body"]
on_error(message)
@error_message = "#{error['name']}: #{error['message']}"
end
when "dump.table"
Expand All @@ -83,7 +89,7 @@ def run(options={}, &block)
n_dumpers -= 1
if n_dumpers <= 0
client.close
@on_finish.call if @on_finish
on_finish
end
end
end
Expand Down Expand Up @@ -177,5 +183,17 @@ def convert_to_column_create_message(message)

column_create_message
end

def on_finish
@on_finish.call if @on_finish
end

def on_progress(message)
@on_progress.call(message) if @on_progress
end

def on_error(error)
@on_error.call(error) if @on_error
end
end
end

0 comments on commit 0bb2fa1

Please sign in to comment.