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����������������������������... 下载