Class: ForwardMachine::ForwarderConnection
- Inherits:
-
EM::Connection
- Object
- EM::Connection
- ForwardMachine::ForwarderConnection
- Defined in:
- lib/forwardmachine/forwarder_connection.rb
Overview
Connection between client and forwarder server.
Instance Method Summary collapse
-
#initialize(destination, forwarder) ⇒ ForwarderConnection
constructor
A new instance of ForwarderConnection.
-
#post_init ⇒ Object
Internal: After client is connected to forwarder, open connection to destination host and port.
-
#proxy_target_unbound ⇒ Object
Internal: After forwarder destination disconnected terminate forwarder connection.
-
#unbind ⇒ Object
Internal: After client disconnects from forwarder notify forwarder server about it.
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_init ⇒ Object
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_unbound ⇒ Object
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 |
#unbind ⇒ Object
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 |