Synchronisation_heuristic.BootstrappingThis module inherits from Core and handle a bootstrapped flag as well as Lwt callbacks when the status of heuristic or the bootstrap flag changes.
The bootstrap flag is set to true in two cases:
Synchronised for the first timeforce_bootstrapped state b is called with b = trueOnly the function force_bootstrapped can set the boolean flag to false.
val create :
?when_bootstrapped_changes:(bool -> unit Lwt.t) ->
?when_status_changes:(status -> unit Lwt.t) ->
threshold:int ->
latency:int ->
unit ->
tcreate ?when_bootstrapped_changes ?when_status_changes ~threshold ~latency () is a wrapper around Core.create ~threshold ~latency ().
when_status_changes is a callback called immediately when the status changes (as a result of some calls to update) and when the status is first set (as a result of calling activate).when_bootstrapped_changes is a callback called immediately when the bootstrap flagged changes (as a result of some calls to update or to force_bootstrapped) or when the flag is first set (as a result of calling activate).val activate : t -> unit Lwt.tactivate state activates the heuristics. It sets the status and the bootstrap flag to their initial values (which depend on the initial value of threshold) and calls the when_status_changes and when_bootstrapped_changes callbacks with these initial values.
This function is intended to be used once, after the call to create and before the first call to update.
val update :
t ->
(Tezos_base.Time.Protocol.t * Tezos_base.P2p_peer.Id.t) ->
unit Lwt.tupdate state candidate is a wrapper around Core.update. If an update changes the status of the core heuristic, the when_status_changes callback is called. Similarly, if an update changes the bootstrap flag, the when_bootstrapped_changes callback is called.
val is_bootstrapped : t -> boolis_bootstrapped state returns the value of the bootstrap flag.
val force_bootstrapped : t -> bool -> unit Lwt.tforce_bootstrapped state b forces the status of the bootstrap flag. If the value of the flag changes as a result, the callback when_bootstrapped_changes is called.
val bootstrapped : t -> unit Lwt.tbootstrapped state is a promise that becomes fulfilled when the current bootstrap flag becomes true. If the bootstrap flag is already true, the promise is already resolved.