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