Class: Net::SSH::Multi::ServerList

### Home Classes Methods

### In Files

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

### Parent

Object

### Methods

- ::new
- #add
- #concat
- #each
- #flatten
- #select
- #to_ary

### Included Modules

- Enumerable

### 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::ServerList

Encapsulates a list of server objects, both dynamic (Net::SSH::Multi::DynamicServer) and static (Net::SSH::Multi::Server). It attempts to make it transparent whether a dynamic server set has been evaluated or not. Note that a ServerList is NOT an Array, though it is Enumerable.

### Public Class Methods

new(list=[]) click to toggle source

Create a new ServerList that wraps the given server list. Duplicate entries will be discarded.

    # File lib/net/ssh/multi/server_list.rb, line 15
    def initialize(list=[])
      @list = list.uniq
    end

### Public Instance Methods

add(server) click to toggle source

Adds the given server to the list, and returns the argument. If an identical server definition already exists in the collection, the argument is not added, and the existing server record is returned instead.

    # File lib/net/ssh/multi/server_list.rb, line 23
    def add(server)
      index = @list.index(server)
      if index
        server = @list[index]
      else
        @list.push(server)
      end
      server
    end

concat(servers) click to toggle source

Adds an array (or otherwise Enumerable list) of servers to this list, by calling add for each argument. Returns `self`.

    # File lib/net/ssh/multi/server_list.rb, line 35
    def concat(servers)
      servers.each { |server| add(server) }
      self
    end

each() click to toggle source

Iterates over each distinct server record in the collection. This will correctly iterate over server records instantiated by a DynamicServer as well, but only if the dynamic server has been "evaluated" (see Net::SSH::Multi::DynamicServer#evaluate!).

    # File lib/net/ssh/multi/server_list.rb, line 44
    def each
      @list.each do |server|
        case server
        when Server then yield server
        when DynamicServer then server.each { |item| yield item }
        else raise ArgumentError, "server list contains non-server: #{server.class}"
        end
      end
      self
    end

flatten() click to toggle source

Returns an array of all servers in the list, with dynamic server records expanded. The result is an array of distinct server records (duplicates are removed from the result).

    # File lib/net/ssh/multi/server_list.rb, line 65
    def flatten
      result = @list.inject([]) do |aggregator, server|
        case server
        when Server then aggregator.push(server)
        when DynamicServer then aggregator.concat(server)
        else raise ArgumentError, "server list contains non-server: #{server.class}"
        end
      end

      result.uniq
    end

Also aliased as: to_ary
select() click to toggle source

Works exactly as Enumerable#select, but returns the result as a new ServerList instance.

    # File lib/net/ssh/multi/server_list.rb, line 57
    def select
      subset = @list.select { |i| yield i }
      ServerList.new(subset)
    end

to_ary() click to toggle source
Alias for: flatten

[Validate]

Generated with the Darkfish Rdoc Generator 2.