Module Mavryk_p2p.P2p_answerer

An Answerer.t is a set of callback functions, parameterized by conn_info record. The conn_info records contains values useful for the callback functions to perform their task, and known after the connection is set up.

The callback functions are called when the node receives `P2p_messages.t` messages. The parameters are the values carried by the message, and a request_info record that contains values pertaining to the connection that may change during the life of the connection.

type 'msg conn_info = {
  1. peer_id : Mavryk_base.TzPervasives.P2p_peer.Id.t;
  2. is_private : bool;
  3. write_advertise : Mavryk_base.TzPervasives.P2p_point.Id.t list -> bool Mavryk_base.TzPervasives.tzresult;
    (*

    write_advertise points must send the message Advertise(points) to the internal peer_id. It must return Ok true if the message has been successfully sent, Ok false if the message has been dropped, or fails with a corresponding error otherwise.

    *)
  4. write_swap_ack : Mavryk_base.TzPervasives.P2p_point.Id.t -> Mavryk_base.TzPervasives.P2p_peer.Id.t -> bool Mavryk_base.TzPervasives.tzresult;
    (*

    write_swap_ack (p1, p2) must send the message Swap_ack(p1, p2) to the internal peer_id. It must return Ok true if the message has been successfully sent, Ok false if the message has been dropped, or fails with a corresponding error otherwise.

    *)
  5. messages : (int * 'msg) Mavryk_stdlib.Lwt_pipe.Maybe_bounded.t;
}
type request_info = {
  1. last_sent_swap_request : (Mavryk_base.TzPervasives.Time.System.t * Mavryk_base.TzPervasives.P2p_peer.Id.t) option;
}
type 'msg callback = {
  1. bootstrap : request_info -> unit Mavryk_base.TzPervasives.tzresult Lwt.t;
  2. advertise : request_info -> Mavryk_base.TzPervasives.P2p_point.Id.t list -> unit Lwt.t;
  3. message : request_info -> int -> 'msg -> unit Lwt.t;
  4. swap_request : request_info -> Mavryk_base.TzPervasives.P2p_point.Id.t -> Mavryk_base.TzPervasives.P2p_peer.Id.t -> unit Lwt.t;
  5. swap_ack : request_info -> Mavryk_base.TzPervasives.P2p_point.Id.t -> Mavryk_base.TzPervasives.P2p_peer.Id.t -> unit Lwt.t;
}
type 'msg t = 'msg conn_info -> 'msg callback