class FFWD::Tunnel::TCP

Attributes

log[R]

Public Class Methods

new(port, core, plugin, log, connection, args) click to toggle source
# File lib/ffwd/tunnel/tcp.rb, line 34
def initialize port, core, plugin, log, connection, args
  @port = port
  @core = core
  @plugin = plugin
  @log = log
  @connection = connection
  @args = args

  starting do
    @plugin.tcp @port do |handle|
      log.debug "Open tcp/#{@port}"

      instance = @connection.new(nil, self, @core, *@args)
      instance.datasink = handle

      handle.data do |data|
        instance.receive_data data
      end

      handle.close do
        log.debug "Close tcp/#{@port}"
        instance.unbind
      end
    end

    @log.info "Tunneling tcp/#{@port}"
  end

  stopping do
    @log.info "Stopped tunneling tcp/#{@port}"
  end
end