anchor.diff:              post_msg(Server, {Facility, Severity, Time, Source, Ps, Content});
           _ ->
               {error, bad_syslog_msg}
  -    end.
  -
  +    end;
  +post_msg({drain, ID}, Msg) when is_tuple(Msg) ->
  +    gproc:send({n, l, {drain, ID}}, {post, Msg});
  +post_msg({channel, Chan}, Msg) when is_tuple(Msg) ->
  +    gproc:send({p, l, {channel, Chan}}, {post, Msg});
  +post_msg(Server, Msg) when is_tuple(Msg) ->
  +    Server ! Msg.
   
   %%====================================================================
   %% gen_server callbacks
  
positive.code:     {noreply, State}.
  
  %% @private
  handle_cast({post, Msg}, State = #state{sock=undefined,
                                          buf=Buf}) ->
      NewBuf = logplex_drain_buffer:push(Msg, Buf),
      {noreply, State#state{buf=NewBuf}};
  
  handle_cast({post, Msg}, State = #state{id = Token,
                                          sock = S}) ->
      case post(Msg, S, Token) of
          ok ->
  
negative.code:             {noreply, reconnect(tcp_error, State)}
      end;
  
  handle_info(?RECONNECT_MSG, State = #state{sock = undefined}) ->
      State1 = State#state{tref = undefined},
      case connect(State1) of
  