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