Class: HrrRbSsh::Connection::Channel::ChannelType::Session
- Inherits:
-
HrrRbSsh::Connection::Channel::ChannelType
show all
- Defined in:
- lib/hrr_rb_ssh/connection/channel/channel_type/session.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/proc_chain.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/proc_chain/chain_context.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/env/context.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/exec/context.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/shell/context.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/window_change.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/pty_req/context.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/subsystem/context.rb,
lib/hrr_rb_ssh/connection/channel/channel_type/session/request_type/window_change/context.rb
Defined Under Namespace
Classes: ProcChain, RequestType
Constant Summary
collapse
- NAME =
'session'
Instance Method Summary
collapse
[], __subclass_list__, inherited
Constructor Details
#initialize(connection, channel, message, socket = nil) ⇒ Session
Returns a new instance of Session.
13
14
15
16
17
18
19
|
# File 'lib/hrr_rb_ssh/connection/channel/channel_type/session.rb', line 13
def initialize connection, channel, message, socket=nil
@logger = Logger.new self.class.name
@connection = connection
@channel = channel
@variables = {}
@proc_chain = ProcChain.new
end
|
Instance Method Details
#close ⇒ Object
25
26
27
28
29
|
# File 'lib/hrr_rb_ssh/connection/channel/channel_type/session.rb', line 25
def close
if @proc_chain_thread
@proc_chain_thread.exit
end
end
|
#proc_chain_thread ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/hrr_rb_ssh/connection/channel/channel_type/session.rb', line 36
def proc_chain_thread
Thread.start {
@logger.info { "start proc chain thread" }
begin
exitstatus = @proc_chain.call_next
rescue => e
@logger.error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join }
exitstatus = 1
ensure
@logger.info { "closing proc chain thread" }
@logger.info { "wait for sending output" }
@channel.wait_until_senders_closed
@logger.info { "sending output finished" }
@channel.close from=:channel_type_instance, exitstatus=exitstatus
@logger.info { "proc chain thread closed" }
end
}
end
|
#request(message) ⇒ Object
31
32
33
34
|
# File 'lib/hrr_rb_ssh/connection/channel/channel_type/session.rb', line 31
def request message
request_type = message[:'request type']
RequestType[request_type].run @proc_chain, @connection.username, @channel.io, @variables, message, @connection.options
end
|
#start ⇒ Object
21
22
23
|
# File 'lib/hrr_rb_ssh/connection/channel/channel_type/session.rb', line 21
def start
@proc_chain_thread = proc_chain_thread
end
|