aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ssh/src/ssh_subsystem.erl
diff options
context:
space:
mode:
authorIngela Anderton Andin <[email protected]>2012-12-14 09:44:10 +0100
committerIngela Anderton Andin <[email protected]>2012-12-14 09:44:10 +0100
commit70892a1e03e441b24f879a9bb5f124defbab2e16 (patch)
treedeb09395eec02ee31efda4415070113a29d89128 /lib/ssh/src/ssh_subsystem.erl
parent33124ad120c10e5057f25753a9d4b56f265b53dd (diff)
parent671cf55d2388ef3c30f8e0e6b3e5ec824b02da09 (diff)
downloadotp-70892a1e03e441b24f879a9bb5f124defbab2e16.tar.gz
otp-70892a1e03e441b24f879a9bb5f124defbab2e16.tar.bz2
otp-70892a1e03e441b24f879a9bb5f124defbab2e16.zip
Merge branch 'ia/ssh/add_users_guide/OTP-7786'
* ia/ssh/add_users_guide/OTP-7786: ssh: Document and clean up SSH behaviours ssh: Add Users Guide and enhance man pages ssh: Added User's Guide framework and minor enhancements
Diffstat (limited to 'lib/ssh/src/ssh_subsystem.erl')
-rw-r--r--lib/ssh/src/ssh_subsystem.erl47
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/ssh/src/ssh_subsystem.erl b/lib/ssh/src/ssh_subsystem.erl
new file mode 100644
index 0000000000..5a9fa32668
--- /dev/null
+++ b/lib/ssh/src/ssh_subsystem.erl
@@ -0,0 +1,47 @@
+-module(ssh_subsystem).
+
+%% API to special server side channel that can be pluged into the erlang ssh daemeon
+-callback init(Args :: term()) ->
+ {ok, State :: term()} | {ok, State :: term(), timeout() | hibernate} |
+ {stop, Reason :: term()} | ignore.
+
+-callback terminate(Reason :: (normal | shutdown | {shutdown, term()} |
+ term()),
+ State :: term()) ->
+ term().
+
+-callback handle_msg(Msg ::term(), State :: term()) ->
+ {noreply, NewState :: term()} |
+ {noreply, NewState :: term(), timeout() | hibernate} |
+ {stop, Reason :: term(), NewState :: term()}.
+
+-callback handle_ssh_msg({ssh_cm, ConnectionRef::term(), SshMsg::term()},
+ State::term()) -> {ok, State::term()} |
+ {stop, ChannelId::integer(),
+ State::term()}.
+
+%%% API
+-export([start/4, start/5, start_link/4, start_link/5, enter_loop/1]).
+
+%% gen_server callbacks
+-export([init/1, terminate/2]).
+
+start(ConnectionManager, ChannelId, CallBack, CbInitArgs) ->
+ ssh_channel:start(ConnectionManager, ChannelId, CallBack, CbInitArgs, undefined).
+
+start(ConnectionManager, ChannelId, CallBack, CbInitArgs, Exec) ->
+ ssh_channel:start(ConnectionManager, ChannelId, CallBack, CbInitArgs, Exec).
+
+start_link(ConnectionManager, ChannelId, CallBack, CbInitArgs) ->
+ ssh_channel:start_link(ConnectionManager, ChannelId, CallBack, CbInitArgs, undefined).
+
+start_link(ConnectionManager, ChannelId, CallBack, CbInitArgs, Exec) ->
+ ssh_channel:start_link(ConnectionManager, ChannelId, CallBack, CbInitArgs, Exec).
+
+enter_loop(State) ->
+ ssh_channel:enter_loop(State).
+
+init(Args) ->
+ ssh_channel:init(Args).
+terminate(Reason, State) ->
+ ssh_channel:terminate(Reason, State).