class Protobuf::Rpc::Connectors::Socket
Public Instance Methods
log_signature()
click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 18 def log_signature @_log_signature ||= "[client-#{self.class}]" end
send_request()
click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 9 def send_request timeout_wrap do setup_connection connect_to_rpc_server post_init read_response end end
Private Instance Methods
close_connection()
click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 24 def close_connection @socket.close logger.debug { sign_message('Connector closed') } end
connect_to_rpc_server()
click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 29 def connect_to_rpc_server @socket ||= TCPSocket.new(options[:host], options[:port]) logger.debug { sign_message("Connection established #{options[:host]}:#{options[:port]}") } end
error?()
click to toggle source
Method to determine error state, must be used with Connector api
# File lib/protobuf/rpc/connectors/socket.rb, line 35 def error? return true if @error logger.debug { sign_message("Error state : #{@socket.closed?}") } @socket.closed? end
post_init()
click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 41 def post_init send_data unless error? rescue => e failure(:RPC_ERROR, "Connection error: #{e.message}") end
read_data()
click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 47 def read_data size_io = StringIO.new until (size_reader = @socket.getc) == "-" size_io << size_reader end str_size_io = size_io.string "#{str_size_io}-#{@socket.read(str_size_io.to_i)}" end
read_response()
click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 58 def read_response logger.debug { sign_message("error? is #{error?}") } return if error? response_buffer = ::Protobuf::Rpc::Buffer.new(:read) response_buffer << read_data @response_data = response_buffer.data parse_response if response_buffer.flushed? end
send_data()
click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 67 def send_data return if error? request_buffer = ::Protobuf::Rpc::Buffer.new(:write) request_buffer.set_data(@request_data) @socket.write(request_buffer.write) @socket.flush logger.debug { sign_message("write closed") } end