lib/fastdfs-client/socket.rb in fastdfs-client-1.4.4 vs lib/fastdfs-client/socket.rb in fastdfs-client-2.0.0
- old
+ new
@@ -7,16 +7,16 @@
module Client
class Socket
attr_accessor :socket, :host, :port
- def initialize(host, port, options = {})
+ def initialize(host, port, options)
@host, @port = host, port
@header_len = ProtoCommon::HEAD_LEN
@options = options || {}
- @connection_timeout = @options[:connection_timeout] || 3
- @recv_timeout = @options[:recv_timeout] || 20
+ @connection_timeout = @options[:connection_timeout]
+ @recv_timeout = @options[:recv_timeout]
end
def write(*args)
@cmd = args.shift
pkg = args.shift
@@ -37,11 +37,11 @@
end
yield if block_given?
end
def connected
- !@socket.closed?
+ @socket.nil? ? false : !@socket.closed?
end
def receive(&block)
@header = timeout_recv do
@socket.recv(@header_len).unpack("C*")
@@ -53,16 +53,21 @@
res_header[:result] = res unless res.nil?
end
res_header
end
+ def response_obj
+ Hash[status: true, err_msg: nil, result: nil]
+ end
+
private
def parseHeader
- err_msg = nil
- err_msg = "recv package size #{@header} is not equal #{@header_len}, cmd: #{CMD::MAPPING_NAME[@cmd]}" unless @header.length == @header_len || err_msg
- err_msg = "recv cmd: #{@header[8]} is not correct, expect recv code: #{CMD::RESP_CODE}, cmd: #{CMD::MAPPING_NAME[@cmd]}" unless @header[8] == CMD::RESP_CODE || err_msg
- err_msg = "recv erron #{@header[9]}, 0 is correct cmd: #{CMD::MAPPING_NAME[@cmd]}" unless @header[9] == 0 || err_msg
- {status: err_msg.nil?, err_msg: err_msg}
+ obj = response_obj
+ obj[:err_msg] = "recv package size #{@header} is not equal #{@header_len}, cmd: #{CMD::MAPPING_NAME[@cmd]}" unless @header.length == @header_len || obj[:err_msg]
+ obj[:err_msg] = "recv cmd: #{@header[8]} is not correct, expect recv code: #{CMD::RESP_CODE}, cmd: #{CMD::MAPPING_NAME[@cmd]}" unless @header[8] == CMD::RESP_CODE || obj[:err_msg]
+ obj[:err_msg] = "recv erron #{@header[9]}, 0 is correct cmd: #{CMD::MAPPING_NAME[@cmd]}" unless @header[9] == 0 || obj[:err_msg]
+ obj[:status] = obj[:err_msg].nil?
+ obj
end
def timeout_recv
Timeout.timeout(@recv_timeout) do
yield if block_given?
\ No newline at end of file