diff options
Diffstat (limited to 'lib/ssh/test/ssh_bench_dev_null.erl')
| -rw-r--r-- | lib/ssh/test/ssh_bench_dev_null.erl | 58 | 
1 files changed, 58 insertions, 0 deletions
| diff --git a/lib/ssh/test/ssh_bench_dev_null.erl b/lib/ssh/test/ssh_bench_dev_null.erl new file mode 100644 index 0000000000..0e390b7712 --- /dev/null +++ b/lib/ssh/test/ssh_bench_dev_null.erl @@ -0,0 +1,58 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2005-2016. 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. +%% You may obtain a copy of the License at +%% +%%     http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% + +%% + +%%% Description: Example ssh server +-module(ssh_bench_dev_null). +-behaviour(ssh_daemon_channel). + +-record(state, { +          cm, +          chid, +          n, +          sum = 0 +	 }). + +-export([init/1, handle_msg/2, handle_ssh_msg/2, terminate/2]). + +init([N]) -> {ok, #state{n=N}}. + +handle_msg({ssh_channel_up, ChId, CM}, S) ->  +    {ok, S#state{cm = CM, +                 chid = ChId}}. + + + +handle_ssh_msg({ssh_cm, CM, {data,ChId,0,Data}}, #state{n=N, sum=Sum0, cm=CM, chid=ChId} = S) ->  +    Sum = Sum0 + size(Data), +    if Sum == N -> +            %% Got all +            ssh_connection:send(CM, ChId, <<"READY">>), +            {ok, S#state{sum=Sum}}; +       Sum < N -> +            %% Expects more +            {ok, S#state{sum=Sum}} +    end; +handle_ssh_msg({ssh_cm, _, {exit_signal,ChId,_,_,_}}, S) -> {stop, ChId, S}; +handle_ssh_msg({ssh_cm, _, {exit_status,ChId,_}    }, S) -> {stop, ChId, S}; +handle_ssh_msg({ssh_cm, _, _                       }, S) -> {ok, S}. + +terminate(_, _) -> ok. | 
