Mavryk_p2p.P2p_conn
Type of a connection to a peer, parametrized by the type of messages exchanged as well as meta-information associated to a peer and a connection. It wraps a P2p_socket.t
, adding meta-information and data-structures describing a more fine-grained logical state of the connection. It also set up an answering worker that responds to the messages P2p_message.t
using the callback functions of a P2p_answerer.t
.
val create :
conn:('msg P2p_message.t, 'conn) P2p_socket.t ->
point_info:('msg, 'peer, 'conn) t P2p_point_state.Info.t option ->
peer_info:(('msg, 'peer, 'conn) t, 'peer, 'conn) P2p_peer_state.Info.t ->
messages:(int * 'msg) Mavryk_stdlib.Lwt_pipe.Maybe_bounded.t ->
canceler:Lwt_canceler.t ->
greylister:(unit -> unit) ->
callback:'msg P2p_answerer.t ->
disable_peer_discovery:bool ->
Mavryk_base.TzPervasives.Network_version.t ->
('msg, 'peer, 'conn) t
val peer_id : ('msg, 'peer, 'conn) t -> Mavryk_base.TzPervasives.P2p_peer.Id.t
val private_node : ('msg, 'peer, 'conn) t -> bool
private_node t
returns 'true' if the node associated to this connection is in private mode
val trusted_node : ('msg, 'peer, 'conn) t -> bool
trusted_node t
returns 'true' if the node associated to this connection is trusted
val info :
('msg, 'peer, 'conn) t ->
'conn Mavryk_base.TzPervasives.P2p_connection.Info.t
val local_metadata : ('msg, 'peer, 'conn) t -> 'conn
val remote_metadata : ('msg, 'peer, 'conn) t -> 'conn
val stat : ('msg, 'peer, 'conn) t -> Mavryk_base.TzPervasives.P2p_stat.t
stat t
is a snapshot of current bandwidth usage for t
.
val read :
('msg, 'peer, 'conn) t ->
'msg Mavryk_base.TzPervasives.tzresult Lwt.t
read t
returns a message popped from t
's app message queue, or fails with Connection_closed
.
val is_readable :
('msg, 'peer, 'conn) t ->
unit Mavryk_base.TzPervasives.tzresult Lwt.t
is_readable t
returns when there is at least one message ready to be read.
val write_swap_request :
('msg, 'peer, 'conn) t ->
Mavryk_base.TzPervasives.P2p_point.Id.t ->
Mavryk_base.TzPervasives.P2p_peer.Id.t ->
bool Mavryk_base.TzPervasives.tzresult
val write_swap_ack :
('msg, 'peer, 'conn) t ->
Mavryk_base.TzPervasives.P2p_point.Id.t ->
Mavryk_base.TzPervasives.P2p_peer.Id.t ->
bool Mavryk_base.TzPervasives.tzresult
val write_bootstrap :
('msg, 'peer, 'conn) t ->
bool Mavryk_base.TzPervasives.tzresult
val write :
('msg, 'peer, 'conn) t ->
'msg ->
unit Mavryk_base.TzPervasives.tzresult Lwt.t
write t msg
is P2p_socket.write t' msg
where t'
is the internal P2p_socket.t
inside t
.
val write_sync :
('msg, 'peer, 'conn) t ->
'msg ->
unit Mavryk_base.TzPervasives.tzresult Lwt.t
write_sync t msg
is P2p_socket.write_sync t' msg
where t'
is the internal P2p_socket.t
inside t
.
val write_now :
('msg, 'peer, 'conn) t ->
'msg ->
bool Mavryk_base.TzPervasives.tzresult
write_now t msg
is P2p_socket.write_now t' msg
where t'
is the internal P2p_socket.t
inside t
.
val encode :
('msg, 'peer, 'conn) t ->
'msg ->
'msg P2p_message.t P2p_socket.encoded_message
Mavryk_base.TzPervasives.tzresult
encode t messsage
encodes a message to be used with write_encoded_now
. It is particularly useful to avoid encoding several times the same message.
val write_encoded_now :
('msg, 'peer, 'conn) t ->
'msg P2p_message.t P2p_socket.encoded_message ->
bool Mavryk_base.TzPervasives.tzresult
write_encoded_now t msg
is P2p_socket.write_now t' msg
where t'
is the internal P2p_socket.t
inside t
and msg
has been pre-encoded using encode
. msg
will be overwritten and should not be used after this invocation.
val disconnect :
?wait:bool ->
reason:P2p_disconnection_reason.t ->
('msg, 'peer, 'conn) t ->
unit Lwt.t
val disconnect_reason :
('msg, 'peer, 'conn) t ->
P2p_disconnection_reason.t option
val close :
reason:P2p_disconnection_reason.t ->
('msg, 'peer, 'conn) t ->
unit Lwt.t
val negotiated_version :
('msg, 'peer, 'conn) t ->
Mavryk_base.TzPervasives.Network_version.t
Returns the network version that will be used for this connection. This network version is the best version compatible with the versions supported by ours and the remote peer.