diff options
Diffstat (limited to 'lib/ssh/src/ssh_shell.erl')
| -rw-r--r-- | lib/ssh/src/ssh_shell.erl | 43 | 
1 files changed, 24 insertions, 19 deletions
| diff --git a/lib/ssh/src/ssh_shell.erl b/lib/ssh/src/ssh_shell.erl index 17224b6ef4..cdc9a6df5b 100644 --- a/lib/ssh/src/ssh_shell.erl +++ b/lib/ssh/src/ssh_shell.erl @@ -1,7 +1,7 @@  %%  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 2009-2016. All Rights Reserved. +%% Copyright Ericsson AB 2009-2018. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. @@ -22,18 +22,21 @@  -module(ssh_shell). +-include("ssh.hrl").  -include("ssh_connect.hrl").  %%% As this is an user interactive client it behaves like a daemon  %%% channel inspite of it being a client.  --behaviour(ssh_daemon_channel). +-behaviour(ssh_server_channel). -%% ssh_channel callbacks +%% ssh_server_channel callbacks  -export([init/1, handle_msg/2, handle_ssh_msg/2, terminate/2]).  %% Spawn export  -export([input_loop/2]). +-export([dbg_trace/3]). +  -record(state,   	{  	 io,      %% Io process @@ -43,23 +46,8 @@         ).  %%==================================================================== -%% ssh_channel callbacks +%% ssh_server_channel callbacks  %%==================================================================== --spec init(Args :: term()) -> -    {ok, State :: term()} | {ok, State :: term(), timeout() | hibernate} | -    {stop, Reason :: term()} | ignore. - --spec terminate(Reason :: (normal | shutdown | {shutdown, term()} | -                               term()), -                    State :: term()) -> -    term(). - --spec handle_msg(Msg ::term(), State :: term()) -> -    {ok, State::term()} | {stop, ChannelId::integer(), State::term()}.  --spec handle_ssh_msg({ssh_cm, ConnectionRef::term(), SshMsg::term()}, -			 State::term()) -> {ok, State::term()} | -					   {stop, ChannelId::integer(), -					    State::term()}.  %%--------------------------------------------------------------------  %% Function: init(Args) -> {ok, State}  @@ -194,3 +182,20 @@ get_ancestors() ->  	A when is_list(A) -> A;  	_              -> []      end. + +%%%################################################################ +%%%# +%%%# Tracing +%%%# + +dbg_trace(points,         _,  _) -> [terminate]; + +dbg_trace(flags,  terminate,  _) -> [c]; +dbg_trace(on,     terminate,  _) -> dbg:tp(?MODULE,  terminate, 2, x); +dbg_trace(off,    terminate,  _) -> dbg:ctpg(?MODULE, terminate, 2); +dbg_trace(format, terminate, {call, {?MODULE,terminate, [Reason, State]}}) -> +    ["Shell Terminating:\n", +     io_lib:format("Reason: ~p,~nState:~n~s", [Reason, wr_record(State)]) +    ]. + +?wr_record(state). | 
