[Groonga-commit] droonga/fluent-plugin-droonga at 6242408 [master] Implement MessagePackPacker as a class

Back to archive index

Kouhei Sutou null+****@clear*****
Mon Dec 16 15:17:02 JST 2013


Kouhei Sutou	2013-12-16 15:17:02 +0900 (Mon, 16 Dec 2013)

  New Revision: 6242408d5e0ad3c060da393e5a121fb511ac3715
  https://github.com/droonga/fluent-plugin-droonga/commit/6242408d5e0ad3c060da393e5a121fb511ac3715

  Message:
    Implement MessagePackPacker as a class

  Modified files:
    lib/droonga/fluent_message_sender.rb
    lib/droonga/message_pack_packer.rb
    test/unit/test_message_pack_packer.rb

  Modified: lib/droonga/fluent_message_sender.rb (+1 -1)
===================================================================
--- lib/droonga/fluent_message_sender.rb    2013-12-16 15:11:52 +0900 (a57bb73)
+++ lib/droonga/fluent_message_sender.rb    2013-12-16 15:17:02 +0900 (27a4f76)
@@ -41,7 +41,7 @@ module Droonga
     def send(tag, data)
       $log.trace("#{log_tag}: send: start")
       connect if****@socke*****?
-      fluent_message = MessagePackPacker.to_msgpack(
+      fluent_message = MessagePackPacker.pack(
         [tag, Time.now.to_i, data]
       )
       @socket.write(fluent_message)

  Modified: lib/droonga/message_pack_packer.rb (+31 -21)
===================================================================
--- lib/droonga/message_pack_packer.rb    2013-12-16 15:11:52 +0900 (227e49a)
+++ lib/droonga/message_pack_packer.rb    2013-12-16 15:17:02 +0900 (539f0b5)
@@ -15,34 +15,44 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
+require "msgpack"
+
 module Droonga
-  module MessagePackPacker
+  class MessagePackPacker
     class << self
-      def to_msgpack(object)
-        packer = MessagePack::Packer.new
-        to_msgpack_internal(packer, object)
+      def pack(object)
+        packer = new
+        packer.pack(object)
         packer.to_s
       end
+    end
+
+    def initialize
+      @packer = MessagePack::Packer.new
+    end
 
-      def to_msgpack_internal(packer, object)
-        case object
-        when Array
-          packer.write_array_header(object.size)
-          object.each do |element|
-            to_msgpack_internal(packer, element)
-          end
-        when Hash
-          packer.write_map_header(object.size)
-          object.each do |key, value|
-            to_msgpack_internal(packer, key)
-            to_msgpack_internal(packer, value)
-          end
-        when Time
-          packer.write(object.utc.iso8601)
-        else
-          packer.write(object)
+    def pack(object)
+      case object
+      when Array
+        @packer.write_array_header(object.size)
+        object.each do |element|
+          pack(element)
         end
+      when Hash
+        @packer.write_map_header(object.size)
+        object.each do |key, value|
+          pack(key)
+          pack(value)
+        end
+      when Time
+        @packer.write(object.utc.iso8601)
+      else
+        @packer.write(object)
       end
     end
+
+    def to_s
+      @packer.to_s
+    end
   end
 end

  Modified: test/unit/test_message_pack_packer.rb (+1 -1)
===================================================================
--- test/unit/test_message_pack_packer.rb    2013-12-16 15:11:52 +0900 (96f5d2f)
+++ test/unit/test_message_pack_packer.rb    2013-12-16 15:17:02 +0900 (e8f201c)
@@ -42,7 +42,7 @@ class MessagePackPackerTest < Test::Unit::TestCase
 
   private
   def pack(object)
-    Droonga::MessagePackPacker.to_msgpack(object)
+    Droonga::MessagePackPacker.pack(object)
   end
 
   def unpack(msgpack)
-------------- next part --------------
HTML����������������������������...
下载 



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