class Protobuf::Rpc::Connectors::Socket

def close_connection

def close_connection
  @socket.close
  log_debug { sign_message('Connector closed')  }
end

def connect_to_rpc_server

def connect_to_rpc_server
  @socket = TCPSocket.new(options[:host], options[:port])
  log_debug { sign_message("Connection established #{options[:host]}:#{options[:port]}")  }
end

def error?

Method to determine error state, must be used with Connector api
def error?
  return true if @error
  log_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
  log_debug { sign_message("error? is #{error?}") }
  return if error?
  response_buffer = ::Protobuf::Rpc::Buffer.new(:read)
  response_buffer << read_data
  @stats.response_size = response_buffer.size
  @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
  log_debug { sign_message("write closed") }
end

def send_request

def send_request
  setup_connection
  connect_to_rpc_server
  post_init
  read_response
end