class Protobuf::Rpc::Connectors::Socket

Public Instance Methods

log_signature() click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 19
def log_signature
  @_log_signature ||= "[client-#{self.class}]"
end
send_request() click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 10
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 25
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 30
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 36
def error?
  return true if @error
  logger.debug { sign_message("Error state : #{@socket.closed?}")  }
  @socket.closed?
end
read_data() click to toggle source
# File lib/protobuf/rpc/connectors/socket.rb, line 42
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 53
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 62
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