Shell: export P2p.gid

This commit is contained in:
Vincent Bernardoff 2016-11-28 23:01:37 +01:00 committed by Grégoire Henry
parent 41d5bbe989
commit dc2084d993
2 changed files with 11 additions and 2 deletions

View File

@ -63,6 +63,8 @@ let gid_length = 16
let pp_gid ppf gid =
Format.pp_print_string ppf (Hex_encode.hex_encode gid)
let zero_gid = String.make 16 '\x00'
(* the common version for a pair of peers, if any, is the maximum one,
in lexicographic order *)
let common_version la lb =
@ -280,6 +282,7 @@ module Make (P: PARAMS) = struct
outside world. Hidden Lwt workers are associated to a net at its
creation and can be killed using the shutdown callback. *)
type net = {
gid : gid ;
recv_from : unit -> (peer * P.msg) Lwt.t ;
send_to : peer -> P.msg -> unit Lwt.t ;
try_send_to : peer -> P.msg -> bool ;
@ -1317,7 +1320,7 @@ module Make (P: PARAMS) = struct
and set_metadata _gid _meta = () (* TODO: implement *)
in
let net =
{ shutdown ; peers ; find_peer ;
{ gid = my_gid ; shutdown ; peers ; find_peer ;
recv_from ; send_to ; try_send_to ; broadcast ;
blacklist ; whitelist ; maintain ; roll ;
peer_info ; get_metadata ; set_metadata } in
@ -1327,6 +1330,7 @@ module Make (P: PARAMS) = struct
Lwt.return net
let faked_network =
let gid = String.make 16 '\000' in
let infinity, wakeup = Lwt.wait () in
let shutdown () =
Lwt.wakeup_exn wakeup Lwt_stream.Empty;
@ -1344,13 +1348,14 @@ module Make (P: PARAMS) = struct
let peer_info _ = assert false in
let get_metadata _ = None in
let set_metadata _ _ = () in
{ shutdown ; peers ; find_peer ;
{ gid ; shutdown ; peers ; find_peer ;
recv_from ; send_to ; try_send_to ; broadcast ;
blacklist ; whitelist ; maintain ; roll ;
peer_info ; get_metadata ; set_metadata }
(* Plug toplevel functions to callback calls. *)
let gid net = net.gid
let shutdown net = net.shutdown ()
let peers net = net.peers ()
let find_peer net gid = net.find_peer gid

View File

@ -55,6 +55,7 @@ type limits = {
(** A global identifier for a peer, a.k.a. an identity *)
type gid
val pp_gid : Format.formatter -> gid -> unit
type 'msg encoding = Encoding : {
tag: int ;
@ -97,6 +98,9 @@ module Make (P : PARAMS) : sig
(** Main network initialisation function *)
val bootstrap : config:config -> limits:limits -> net Lwt.t
(** Return one's gid *)
val gid : net -> gid
(** A maintenance operation : try and reach the ideal number of peers *)
val maintain : net -> unit Lwt.t