class HrrRbSsh::Connection::Channel::ChannelType::Session
Constants
- NAME
Public Class Methods
new(connection, channel, message, socket=nil, logger: nil)
click to toggle source
# File lib/hrr_rb_ssh/connection/channel/channel_type/session.rb, line 15 def initialize connection, channel, message, socket=nil, logger: nil self.logger = logger @connection = connection @channel = channel @proc_chain = ProcChain.new end
Public Instance Methods
close()
click to toggle source
# File lib/hrr_rb_ssh/connection/channel/channel_type/session.rb, line 29 def close if @proc_chain_thread @proc_chain_thread.exit end end
proc_chain_thread()
click to toggle source
# File lib/hrr_rb_ssh/connection/channel/channel_type/session.rb, line 40 def proc_chain_thread Thread.start { log_info { "start proc chain thread" } begin exitstatus = @proc_chain.call_next rescue => e log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join } exitstatus = 1 ensure log_info { "closing proc chain thread" } log_info { "closing channel IOs" } @channel.io.each{ |io| io.close rescue nil } log_info { "channel IOs closed" } log_info { "wait for sending output" } @channel.wait_until_senders_closed log_info { "sending output finished" } @channel.close from=:channel_type_instance, exitstatus=exitstatus log_info { "proc chain thread closed" } end } end
request(message)
click to toggle source
# File lib/hrr_rb_ssh/connection/channel/channel_type/session.rb, line 35 def request message request_type = message[:'request type'] RequestType[request_type].run @proc_chain, @connection.username, @channel.io, @connection.variables, message, @connection.options, self, logger: logger end
start()
click to toggle source
# File lib/hrr_rb_ssh/connection/channel/channel_type/session.rb, line 22 def start case @connection.mode when Mode::SERVER @proc_chain_thread = proc_chain_thread end end