Class | Net::SSH::Multi::ChannelProxy |
In: |
lib/net/ssh/multi/channel_proxy.rb
|
Parent: | Object |
The ChannelProxy is a delegate class that represents a channel that has not yet been opened. It is only used when Net::SSH::Multi is running with with a concurrent connections limit (see Net::SSH::Multi::Session#concurrent_connections).
You‘ll never need to instantiate one of these directly, and will probably (if all goes well!) never even notice when one of these is in use. Essentially, it is spawned by a Net::SSH::Multi::PendingConnection when the pending connection is asked to open a channel. Any actions performed on the channel proxy will then be recorded, until a real channel is set as the delegate (see delegate_to). At that point, all recorded actions will be replayed on the channel, and any subsequent actions will be immediately delegated to the channel.
on_confirm | [R] | This is the "on confirm" callback that gets called when the real channel is opened. |
Instructs the proxy to delegate all further actions to the given channel (which must be an instance of Net::SSH::Connection::Channel). All recorded actions are immediately replayed, in order, against the delegate channel.
# File lib/net/ssh/multi/channel_proxy.rb, line 30 30: def delegate_to(channel) 31: @channel = channel 32: @recordings.each do |sym, args, block| 33: @channel.__send__(sym, *args, &block) 34: end 35: end
If a channel delegate has been specified (see delegate_to), the method will be immediately sent to the delegate. Otherwise, the call is added to the list of recorded method calls, to be played back when a delegate is specified.
# File lib/net/ssh/multi/channel_proxy.rb, line 41 41: def method_missing(sym, *args, &block) 42: if @channel 43: @channel.__send__(sym, *args, &block) 44: else 45: @recordings << [sym, args, block] 46: end 47: end