diff --git a/src/ssl/sdlan_ssl_transport.erl b/src/ssl/sdlan_ssl_transport.erl index 58cbb6a..ac09747 100644 --- a/src/ssl/sdlan_ssl_transport.erl +++ b/src/ssl/sdlan_ssl_transport.erl @@ -29,9 +29,6 @@ session :: sdlan_session:session(), - frames_recv = 0, - bytes_recv = 0, - close_reason = undefined }). @@ -63,8 +60,7 @@ callback_mode() -> handle_event_function. handle_event(info, {handshake, Ref, Transport, Socket, Timeout}, handshaking, - State = #state{ref = Ref, transport = Transport, max_packet_size = MaxPacketSize, - heartbeat_sec = HeartbeatSec}) -> + State = #state{ref = Ref, transport = Transport, max_packet_size = MaxPacketSize, heartbeat_sec = HeartbeatSec}) -> case Transport:handshake(Socket, [], Timeout) of {ok, SslSocket} -> ok = Transport:setopts(SslSocket, [{mode, binary}, {packet, 2}, {active, true}]), @@ -75,19 +71,8 @@ handle_event(info, {handshake, Ref, Transport, Socket, Timeout}, handshaking, {stop, {ssl_handshake_failed, Reason}, State} end; -handle_event(info, {ssl, Socket, Data}, _StateName, - State = #state{socket = Socket, bytes_recv = BytesRecv, frames_recv = FramesRecv}) when is_binary(Data) -> - {keep_state, State#state{bytes_recv = BytesRecv + byte_size(Data), frames_recv = FramesRecv + 1}, - [{next_event, internal, {frame, Data}}]}; - -handle_event(info, {ssl_closed, Socket}, _StateName, State = #state{socket = Socket}) -> - expected_stop(socket_closed, State); - -handle_event(info, {ssl_error, Socket, Reason}, _StateName, State = #state{socket = Socket}) -> - expected_stop({socket_error, Reason}, State); - -%% 处理内部的包消息 -handle_event(internal, {frame, Frame}, StateName, State = #state{socket = Socket, transport = Transport, session = Session}) -> +handle_event(info, {ssl, Socket, Frame}, StateName, + State = #state{socket = Socket, transport = Transport, session = Session}) when is_binary(Frame) -> case sdlan_session:handle_frame(Frame, Session) of {ok, NSession, Packets} -> send_packets(Transport, Socket, Packets), @@ -97,6 +82,12 @@ handle_event(internal, {frame, Frame}, StateName, State = #state{socket = Socket {stop, Reason, State#state{session = NSession}} end; +handle_event(info, {ssl_closed, Socket}, _StateName, State = #state{socket = Socket}) -> + expected_stop(socket_closed, State); + +handle_event(info, {ssl_error, Socket, Reason}, _StateName, State = #state{socket = Socket}) -> + expected_stop({socket_error, Reason}, State); + handle_event(info, {timeout, TimerRef, ping_ticker}, _StateName, State = #state{session = Session}) -> case sdlan_session:handle_timeout(TimerRef, Session) of {ok, NSession} -> @@ -167,20 +158,13 @@ expected_stop(Reason, State) -> next_state_name(_StateName, Session) -> sdlan_session:state_name(Session). -debug_info(StateName, #state{ - session = Session, - frames_recv = FramesRecv, - bytes_recv = BytesRecv, - heartbeat_sec = HeartbeatSec -}) -> +debug_info(StateName, #state{session = Session, heartbeat_sec = HeartbeatSec}) -> ProcInfo = maps:from_list(process_info(self(), [message_queue_len, memory, reductions])), SessionInfo = sdlan_session:debug_info(Session), maps:merge(SessionInfo, ProcInfo#{ state => StateName, session => SessionInfo, - frames_recv => FramesRecv, frames_sent => get_counter(ssl_frames_sent), - bytes_recv => BytesRecv, bytes_sent => get_counter(ssl_bytes_sent), heartbeat_sec => HeartbeatSec }).