lib/fastdfs-client/tracker.rb in fastdfs-client-0.0.5 vs lib/fastdfs-client/tracker.rb in fastdfs-client-1.0.0

- old
+ new

@@ -2,32 +2,27 @@ module Fastdfs module Client class Tracker - extend Hook - before(:get_storage){ @socket.connection } - after(:get_storage){ @socket.close } - attr_accessor :socket, :cmd, :options def initialize(host, port, options = {}) @socket = Socket.new(host, port, options[:socket]) @cmd = CMD::STORE_WITHOUT_GROUP_ONE end def get_storage - header = ProtoCommon.header_bytes(@cmd, 0) - @socket.write(@cmd, header) - res = @socket.receive - return res unless res[:status] - - storage_ip = @socket.content[ProtoCommon::IPADDR].strip - storage_port = @socket.content[ProtoCommon::PORT].unpack("C*").to_pack_long - store_path = @socket.content[ProtoCommon::TRACKER_BODY_LEN-1].unpack("C*")[0] + client = ClientProxy.new(@cmd, @socket, 0) + res = client.dispose do |body| + storage_ip = body[ProtoCommon::IPADDR].strip + storage_port = body[ProtoCommon::PORT].unpack("C*").to_pack_long + store_path = body[ProtoCommon::TRACKER_BODY_LEN-1].unpack("C*")[0] - Storage.new(storage_ip, storage_port, store_path, options) + Storage.new(storage_ip, storage_port, store_path, options) + end + res[:status] ? res[:result] : res end end end end \ No newline at end of file