anchor.diff:  
       error_logger:info_msg("Starting heartbeat generator listening on ~s~n.",[HeartbeatAddress]),
   
  -
       ok = erlzmq:bind(HeartbeatSock, HeartbeatAddress),
       State = #state{heartbeat_sock = HeartbeatSock,
                      heartbeat_interval = Interval,
  
positive.code: code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
  %% ------------------------------------------------------------------
  %% Internal Function Definitions
  %% ------------------------------------------------------------------
  
  %% @doc Sign a heartbeat message so it can be published to the clients
  %%
  %% Returns a list of header tuples that should be included in the
  %% final ZMQ message.
  %%
  sign_message(PrivateKey, Body) ->
      HashedBody = chef_authn:hash_string(Body),
      SignedChecksum = base64:encode(public_key:encrypt_private(HashedBody, PrivateKey)),
      [{<<"Version">>, <<"1.0">>},
       {<<"SignedChecksum">>, SignedChecksum}].
  
  join_bins([], _Sep) ->
      <<>>;
  join_bins(Bins, Sep) when is_binary(Sep) ->
      join_bins(Bins, Sep, []).
  
  join_bins([B], _Sep, Acc) ->
      iolist_to_binary(lists:reverse([B|Acc]));
  join_bins([B|Rest], Sep, Acc) ->
      join_bins(Rest, Sep, [Sep, B | Acc]).
  
negative.code: handle_call(_Request, _From, State) ->
      {noreply, ok, State}.
  
  handle_cast(heartbeat, State) ->
      {noreply, ?TIME_IT(?MODULE, do_send, (State))};
  handle_cast(_Msg, State) ->
      {noreply, State}.
  
  