anchor.diff:                        OQueue::[comm:send_options()]}.
   -type stat_report() :: {RcvCnt::non_neg_integer(), RcvBytes::non_neg_integer(),
                           SendCnt::non_neg_integer(), SendBytes::non_neg_integer()}.
  --type last_msg_sent() :: erlang:timestamp().
  +-type time_last_msg_sent() :: erlang:timestamp().
   
   -type state() ::
       {DestIP                  :: inet:ip_address(),
  
positive.code: session_count(State) -> element(17, State).
  -spec inc_session_count(state()) -> state().
  inc_session_count(State) -> setelement(17, State, session_count(State) + 1).
  
  -spec start_idle_check() -> ok.
  start_idle_check() ->
  
negative.code:                             ok, Message),
                  %% may fail, when tcp just closed
                  _ = inet:setopts(Socket, [{active, once}]),
                  state_after_receiving(State, lists:nth(1, Message));
              {?deliver, Process, Message} ->
                  ?TRACE("Received message ~.0p", [Message]),
                  ?LOG_MESSAGE_SOCK('rcv', Data, byte_size(Data), channel(State)),
                  forward_msg(Process, Message, State),
                  %% may fail, when tcp just closed
                  _ = inet:setopts(Socket, [{active, once}]),
                  state_after_receiving(State, Message);
              {user_close} ->
                  log:log(warn,"[ CC ~p (~p) ] tcp user_close request", [self(), pid_groups:my_pidname()]),
                  close_connection(Socket, State);
  