Class: Net::SSH::Multi::Server

### Home Classes Methods

### In Files

- lib/net/ssh/multi/server.rb

### Parent

Object

### Methods

- ::new
- #<=>
- #[]
- #[]=
- #busy?
- #close
- #fail!
- #failed?
- #hash
- #inspect
- #port
- #session
- #to_s

### Included Modules

- Comparable

### Files

- README.rdoc

### Class/Module Index

Quicksearch

- Net
- Net::SSH
- Net::SSH::Multi
- Net::SSH::Multi::Channel
- Net::SSH::Multi::ChannelProxy
- Net::SSH::Multi::DynamicServer
- Net::SSH::Multi::PendingConnection
- Net::SSH::Multi::Server
- Net::SSH::Multi::ServerList
- Net::SSH::Multi::Session
- Net::SSH::Multi::SessionActions
- Net::SSH::Multi::Subsession
- Net::SSH::Multi::Version

No matching classes.

# Net::SSH::Multi::Server

Encapsulates the connection information for a single remote server, as well as the Net::SSH session corresponding to that information. You'll rarely need to instantiate one of these directly: instead, you should use Net::SSH::Multi::Session#use.

### Attributes

gateway[R]

The Net::SSH::Gateway instance to use to establish the connection. Will be `nil` if the connection should be established without a gateway.

host[R]

The host name (or IP address) of the server to connect to.

master[R]

The Net::SSH::Multi::Session instance that manages this server instance.

options[R]

The Hash of additional options to pass to Net::SSH when connecting (including things like :password, and so forth).

user[R]

The user name to use when logging into the server.

### Public Class Methods

new(master, host, options={}) click to toggle source

Creates a new Server instance with the given connection information. The `master` argument must be a reference to the Net::SSH::Multi::Session instance that will manage this server reference. The `options` hash must conform to the options described for Net::SSH::start, with two additions:

- :via => a Net::SSH::Gateway instance to use when establishing a connection to this server.

- :user => the name of the user to use when logging into this server.

The `host` argument may include the username and port number, in which case those values take precedence over similar values given in the `options`:

    server = Net::SSH::Multi::Server.new(session, 'user@host:1234')
    puts server.user #-> user
    puts server.port #-> 1234

    # File lib/net/ssh/multi/server.rb, line 43
    def initialize(master, host, options={})
      @master = master
      @options = options.dup

      @user, @host, port = host.match(/^(?:([^;,:=]+)@|)(.*?)(?::(\d+)|)$/)[1,3]

      user_opt, port_opt = @options.delete(:user), @options.delete(:port)

      @user = @user || user_opt || master.default_user
      port ||= port_opt

      @options[:port] = port.to_i if port

      @gateway = @options.delete(:via)
      @failed = false
    end

### Public Instance Methods

<=>(server) click to toggle source

Gives server definitions a sort order, and allows comparison.

    # File lib/net/ssh/multi/server.rb, line 79
    def <=>(server)
      [host, port, user] <=> [server.host, server.port, server.user]
    end

[](key) click to toggle source

Returns the value of the server property with the given `key`. Server properties are described via the `:properties` key in the options hash when defining the Server.

    # File lib/net/ssh/multi/server.rb, line 63
    def [](key)
      (options[:properties] || {})[key]
    end

[]=(key, value) click to toggle source

Sets the given key/value pair in the `:properties` key in the options hash. If the options hash has no :properties key, it will be created.

    # File lib/net/ssh/multi/server.rb, line 69
    def []=(key, value)
      (options[:properties] ||= {})[key] = value
    end

busy?(include_invisible=false) click to toggle source

Returns `true` if the session has been opened, and the session is currently busy (as defined by Net::SSH::Connection::Session#busy?). Also returns false if the server has failed to connect.

    # File lib/net/ssh/multi/server.rb, line 144
    def busy?(include_invisible=false)
      !failed? && session && session.busy?(include_invisible)
    end

close() click to toggle source

Closes this server's session. If the session has not yet been opened, this does nothing.

    # File lib/net/ssh/multi/server.rb, line 150
    def close
      session.close if session
    ensure
      master.server_closed(self) if session
      @session = nil
    end

fail!(flag=true) click to toggle source

Indicates (by default) that this server has just failed a connection attempt. If `flag` is false, this can be used to reset the failed flag so that a retry may be attempted.

    # File lib/net/ssh/multi/server.rb, line 115
    def fail!(flag=true)
      @failed = flag
    end

failed?() click to toggle source

Returns `true` if this server has ever failed a connection attempt.

    # File lib/net/ssh/multi/server.rb, line 108
    def failed?
      @failed
    end

hash() click to toggle source

Generates a `Fixnum` hash value for this object. This function has the property that +a.eql?(b)+ implies +a.hash == b.hash+. The hash value is used by class `Hash`. Any hash value that exceeds the capacity of a `Fixnum` will be truncated before being used.

    # File lib/net/ssh/multi/server.rb, line 89
    def hash
      @hash ||= [host, user, port].hash
    end

inspect() click to toggle source

Returns a human-readable representation of this server instance.

    # File lib/net/ssh/multi/server.rb, line 103
    def inspect
      @inspect ||= "#<%s:0x%x %s>" % [self.class.name, object_id, to_s]
    end

port() click to toggle source

Returns the port number to use for this connection.

    # File lib/net/ssh/multi/server.rb, line 74
    def port
      options[:port] || 22
    end

session(require_session=false) click to toggle source

Returns the Net::SSH session object for this server. If `require_session` is false and the session has not previously been created, this will return `nil`. If `require_session` is true, the session will be instantiated if it has not already been instantiated, via the `gateway` if one is given, or directly (via Net::SSH::start) otherwise.

    if server.session.nil?
      puts "connecting..."
      server.session(true)
    end

Note that the sessions returned by this are "enhanced" slightly, to make them easier to deal with in a multi-session environment: they have a :server property automatically set on them, that refers to this object (the Server instance that spawned them).

    assert_equal server, server.session[:server]

    # File lib/net/ssh/multi/server.rb, line 136
    def session(require_session=false)
      return @session if @session || !require_session
      @session ||= master.next_session(self)
    end

to_s() click to toggle source

Returns a human-readable representation of this server instance.

    # File lib/net/ssh/multi/server.rb, line 94
    def to_s
      @to_s ||= begin
        s = "#{user}@#{host}"
        s << ":#{options[:port]}" if options[:port]
        s
      end
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.