tezos-p2p

Tezos: library for a pool of P2P connections
Library tezos-p2p
val fold : ( 'msg, 'peer, 'conn ) t -> init:'a -> f: ( Tezos_base.TzPervasives.P2p_peer.Id.t -> ( 'msg, 'peer, 'conn ) P2p_conn.t -> 'a -> 'a ) -> 'a

fold pool ~init ~f computes (f iN cN ... (f i1 c1 init)...) where id1 ... idN are the ids of every connected peers and c1 ... cN the associated peers info.

val iter : ( Tezos_base.TzPervasives.P2p_peer.Id.t -> ( 'msg, 'peer, 'conn ) P2p_conn.t -> unit ) -> ( 'msg, 'peer, 'conn ) t -> unit

iter f pool applies f to all connected peers of pool.

val list : ( 'msg, 'peer, 'conn ) t -> (Tezos_base.TzPervasives.P2p_peer.Id.t * ( 'msg, 'peer, 'conn ) P2p_conn.t) list
val find_by_point : ( 'msg, 'peer, 'conn ) t -> Tezos_base.TzPervasives.P2p_point.Id.t -> ( 'msg, 'peer, 'conn ) P2p_conn.t option
val find_by_peer_id : ( 'msg, 'peer, 'conn ) t -> Tezos_base.TzPervasives.P2p_peer.Id.t -> ( 'msg, 'peer, 'conn ) P2p_conn.t option
val random_addr : ?different_than:( 'msg, 'peer, 'conn ) P2p_conn.t -> no_private:bool -> ( 'msg, 'peer, 'conn ) t -> (Tezos_base.TzPervasives.P2p_point.Id.t * Tezos_base.TzPervasives.P2p_peer.Id.t) option

random_addr ?conn no_private t returns a random (point_id, peer_id) from the pool of connections. It ignores:

  • connections to private peers if no_private is set to true
  • connection conn
  • connections to peers who didn't provide a listening port at session-establishment
val propose_swap_request : ( 'msg, 'peer, 'conn ) t -> (Tezos_base.TzPervasives.P2p_point.Id.t * Tezos_base.TzPervasives.P2p_peer.Id.t * ( 'msg, 'peer, 'conn ) P2p_conn.t) option

propose_swap_request t returns a triple (point_id, peer_id, conn) where conn is a random connection to a non-private peer, and (point_id, peer_id) is a random, different, connected peer_id at point_id.