class Disloku::SessionManager

Public Class Methods

new() click to toggle source
# File lib/disloku/SessionManager.rb, line 10
def initialize()
        @sessions = {}

        at_exit { shutdown!() }
end

Public Instance Methods

get(connection, &block) click to toggle source
# File lib/disloku/SessionManager.rb, line 16
def get(connection, &block)
        connection = getConnection(connection)
        block.call(connection)
end
getConnection(connection) click to toggle source
# File lib/disloku/SessionManager.rb, line 21
def getConnection(connection)
        if (!@sessions.has_key?(connection.hash))
                Log.instance.info("creating new session #{connection.user}@#{connection.host} -> #{connection.hash}")
                session = Net::SSH.start(connection.host, connection.user, connection.options)
                sftp = Net::SFTP::Session.new(session).connect!
                @sessions[connection.hash] = { :sftp => sftp, :ssh => session }
        end

        return @sessions[connection.hash][:sftp]
end
shutdown!() click to toggle source
# File lib/disloku/SessionManager.rb, line 32
def shutdown!()
        Log.instance.info("closing all open sessions")
        @sessions.each {|key, value| value[:ssh].close() }
end