[Groonga-commit] droonga/drndump at 6a22da5 [master] Extract too long block from a callback to a method

Back to archive index

YUKI Hiroshi null+****@clear*****
Tue Apr 21 15:02:00 JST 2015


YUKI Hiroshi	2015-04-21 15:02:00 +0900 (Tue, 21 Apr 2015)

  New Revision: 6a22da5f93057de02f5d186a7e3301eecf20959e
  https://github.com/droonga/drndump/commit/6a22da5f93057de02f5d186a7e3301eecf20959e

  Message:
    Extract too long block from a callback to a method

  Modified files:
    lib/drndump/dump_client.rb

  Modified: lib/drndump/dump_client.rb (+45 -39)
===================================================================
--- lib/drndump/dump_client.rb    2015-04-21 14:45:53 +0900 (c9e0bd6)
+++ lib/drndump/dump_client.rb    2015-04-21 15:02:00 +0900 (a8934b1)
@@ -63,12 +63,12 @@ module Drndump
         :backend => options[:backend],
         :loop    => options[:loop],
       }
-      client = Droonga::Client.new(client_options.merge(extra_client_options))
-      client.on_error = lambda do |error|
+      @client = Droonga::Client.new(client_options.merge(extra_client_options))
+      @client.on_error = lambda do |error|
         on_error(ClientError.new(error))
       end
 
-      n_dumpers = 0
+      @n_dumpers = 0
 
       @n_messages_per_second = options[:messages_per_second] || DEFAULT_MESSAGES_PER_SECOND
       @n_messages_per_second = [@n_messages_per_second, 1].max
@@ -84,7 +84,7 @@ module Drndump
           "messagesPerSecond" => @n_messages_per_second,
         },
       }
-      client.subscribe(dump_message) do |message|
+      @client.subscribe(dump_message) do |message|
         begin
           on_progress(message)
           case message
@@ -93,53 +93,23 @@ module Drndump
             on_error(message)
             @error_message = message.to_s
           when Hash
-            case message["type"]
-            when "dump.result", "dump.error"
-              if message["statusCode"] != 200
-                client.close
-                error = message["body"]
-                on_error(error)
-                @error_message = "#{error['name']}: #{error['message']}"
-              end
-            when "dump.table"
-              @n_received_messages += 1
-              table_create_message = convert_to_table_create_message(message)
-              yield(table_create_message)
-            when "dump.column"
-              @n_received_messages += 1
-              column_create_message = convert_to_column_create_message(message)
-              yield(column_create_message)
-            when "dump.record"
-              @n_received_messages += 1
-              add_message = message.dup
-              add_message.delete("inReplyTo")
-              add_message["type"] = "add"
-              yield(add_message)
-            when "dump.start"
-              n_dumpers += 1
-            when "dump.end"
-              n_dumpers -= 1
-              if n_dumpers <= 0
-                client.close
-                on_finish
-              end
-            when "dump.forecast"
-              @n_forecasted_messages += message["body"]["nMessages"]
+            handle_dump_message(message) do |message|
+              yield(message)
             end
           when NilClass
-            client.close
+            @client.close
             error = NilMessage.new("nil message in dump")
             on_error(error)
             @error_message = error.to_s
           else
-            client.close
+            @client.close
             error = InvalidMessage.new("invalid message in dump",
                                        :message => message.inspect)
             on_error(error)
             @error_message = error.to_s
           end
         rescue Exception => exception
-          client.close
+          @client.close
           on_error(exception)
           @error_message = exception.to_s
         end
@@ -209,6 +179,42 @@ module Drndump
       }
     end
 
+    def handle_dump_message(message, &block)
+      case message["type"]
+      when "dump.result", "dump.error"
+        if message["statusCode"] != 200
+          @client.close
+          error = message["body"]
+          on_error(error)
+          @error_message = "#{error['name']}: #{error['message']}"
+        end
+      when "dump.table"
+        @n_received_messages += 1
+        table_create_message = convert_to_table_create_message(message)
+        yield(table_create_message)
+      when "dump.column"
+        @n_received_messages += 1
+        column_create_message = convert_to_column_create_message(message)
+        yield(column_create_message)
+      when "dump.record"
+        @n_received_messages += 1
+        add_message = message.dup
+        add_message.delete("inReplyTo")
+        add_message["type"] = "add"
+        yield(add_message)
+      when "dump.start"
+        @n_dumpers += 1
+      when "dump.end"
+        @n_dumpers -= 1
+        if @n_dumpers <= 0
+          @client.close
+          on_finish
+        end
+      when "dump.forecast"
+        @n_forecasted_messages += message["body"]["nMessages"]
+      end
+    end
+
     def convert_to_table_create_message(message)
       body = message["body"]
       flags = []
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index