def initialize( session )
@session = session
@log = @session.registry.log_for( "sftp.session" )
@session.registry.namespace_define :sftp do |ns|
ns.require "net/sftp/protocol/services", "Net::SFTP::Protocol"
ns.require "net/sftp/operations/services", "Net::SFTP::Operations"
ns.session( :pipeline => [] ) { self }
@driver = ns.protocol.driver
@driver.on_open do |d|
d.on_attrs( &method( :do_attrs ))
d.on_data( &method( :do_data ))
d.on_handle(&method( :do_handle ))
d.on_name( &method( :do_name ))
d.on_status(&method( :do_status ))
if block_given?
begin
yield self
ensure
d.close
end
end
end
@operations = ns.operations
end
@requests = Hash.new
@session.loop if block_given?
end