Class: ForwardMachine::ForwarderConnection

Inherits:
EM::Connection
  • Object
show all
Defined in:
lib/forwardmachine/forwarder_connection.rb

Overview

Connection between client and forwarder server.

Instance Method Summary collapse

Constructor Details

#initialize(destination, forwarder) ⇒ ForwarderConnection

Returns a new instance of ForwarderConnection.



6
7
8
9
10
11
12
13
14
# File 'lib/forwardmachine/forwarder_connection.rb', line 6

def initialize(destination, forwarder)
  @destination = destination
  @destination_host, @destination_port = destination.split(":")
  @forwarder = forwarder
  # Number of seconds server will wait for TCP connection in pending state
  self.pending_connect_timeout = 60
  # Number of seconds server connection remain open waiting for data
  self.comm_inactivity_timeout = 60 * 30
end

Instance Method Details

#post_initObject

Internal: After client is connected to forwarder, open connection to destination host and port



18
19
20
21
22
23
24
25
26
# File 'lib/forwardmachine/forwarder_connection.rb', line 18

def post_init
  logger.info("Client #{peer} connected to forwarder #{@forwarder}")
  EM.connect(@destination_host, @destination_port,
    ForwardedConnection, self)
rescue RuntimeError => e
  logger.error("Client #{peer} on #{@forwarder} couldn't be connected with destination")
  logger.close
  close_connection
end

#proxy_target_unboundObject

Internal: After forwarder destination disconnected terminate forwarder connection



30
31
32
33
# File 'lib/forwardmachine/forwarder_connection.rb', line 30

def proxy_target_unbound
  logger.info("Destination disconnected from forwarder #{@forwarder}")
  close_connection
end

#unbindObject

Internal: After client disconnects from forwarder notify forwarder server about it.



37
38
39
40
41
# File 'lib/forwardmachine/forwarder_connection.rb', line 37

def unbind
  logger.info("Client #{peer} disconnected from forwarder #{@forwarder}")
  logger.close
  @forwarder.forwarder_connection_closed
end