anchor.diff:      end.
   
   %%====================================================================
  -%% gen_server callbacks
  -%%====================================================================
  -
  +
  +%% @private
   init([OurPeerId]) ->
       erlang:send_after(?ROUND_TIME, self(), round_tick),
       {ok, #state{ our_peer_id = OurPeerId }}.
   
  +%% @private
   handle_call({monitor, Pid}, _From, S) ->
       _Tref = erlang:monitor(process, Pid),
       NewChain = insert_new_peer_into_chain(Pid, S#state.opt_unchoke_chain),
  
positive.code:     ?INFO([unknown_info_msg, ?MODULE, Info]),
      {noreply, State}.
  
  terminate(_Reason, _S) ->
      ok.
  
  code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
  
negative.code: -ignore_xref([{start_link, 1}]).
  
  %%====================================================================
  
  %% @doc Start the choking server.
  %% @end
  -spec start_link(binary()) -> {ok, pid()} | {error, any()} | ignore.
  start_link(OurPeerId) ->
      gen_server:start_link({local, ?SERVER}, ?MODULE, [OurPeerId], []).
  
  %% @doc Request an immediate rechoke rather than wait.
  %% <p>This call is used when something urgent happens where it would
  %% be advantageous to quickly rechoke all peers.</p>
  %% @end
  -spec perform_rechoke() -> ok.
  perform_rechoke() ->
      gen_server:cast(?SERVER, rechoke).
  
  %% @doc Ask the choking server to monitor `Pid'
  %% @end
  -spec monitor(pid()) -> ok.
  monitor(Pid) ->
      gen_server:call(?SERVER, {monitor, Pid}).
  