class Protobuf::Rpc::Connectors::Socket
def close_connection
def close_connection @socket.close logger.debug { sign_message('Connector closed') } end
def connect_to_rpc_server
def connect_to_rpc_server @socket = TCPSocket.new(options[:host], options[:port]) logger.debug { sign_message("Connection established #{options[:host]}:#{options[:port]}") } end
def error?
def error? return true if @error logger.debug { sign_message("Error state : #{@socket.closed?}") } @socket.closed? end
def log_signature
def log_signature @_log_signature ||= "[client-#{self.class}]" end
def read_data
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
def read_response
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
def send_data
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
def send_request
def send_request timeout_wrap do setup_connection connect_to_rpc_server post_init read_response end end