1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141(*****************************************************************************)(* *)(* Open Source License *)(* Copyright (c) 2020-2022 Nomadic Labs, <contact@nomadic-labs.com> *)(* *)(* Permission is hereby granted, free of charge, to any person obtaining a *)(* copy of this software and associated documentation files (the "Software"),*)(* to deal in the Software without restriction, including without limitation *)(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *)(* and/or sell copies of the Software, and to permit persons to whom the *)(* Software is furnished to do so, subject to the following conditions: *)(* *)(* The above copyright notice and this permission notice shall be included *)(* in all copies or substantial portions of the Software. *)(* *)(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*)(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *)(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *)(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*)(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *)(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *)(* DEALINGS IN THE SOFTWARE. *)(* *)(*****************************************************************************)letpp_first_elementelem_encppfl=letopenFormatinpp_print_stringppf"[ ";(matchlwith|[]->()|[element]->elem_encppfelement|element::_->elem_encppfelement;pp_print_stringppf"; ...");pp_print_stringppf" ]"moduleP2p_protocol=structincludeInternal_event.Simpleletsection=["p2p";"protocol"]letprivate_node_new_peers=declare_1~section~name:"private_node_new_peers"~msg:"received new peers addresses from private peer {peer}"~level:Warning("peer",P2p_peer.Id.encoding)letprivate_node_peers_request=declare_1~section~name:"private_node_peers_request"~msg:"received requests for peers addresses from private peer {peer}"~level:Warning("peer",P2p_peer.Id.encoding)letprivate_node_swap_request=declare_1~section~name:"private_node_swap_request"~msg:"received swap requests from private peer {peer}"~level:Warning("peer",P2p_peer.Id.encoding)letprivate_node_swap_ack=declare_1~section~name:"private_node_swap_ack"~msg:"received swap ack from private peer {peer}"~level:Warning("peer",P2p_peer.Id.encoding)letprivate_node_request=declare_1~section~name:"private_node_request"~msg:"private peer ({peer}) asked other peer's addresses"~level:Warning("peer",P2p_peer.Id.encoding)letadvertise_sending_failed=declare_2~section~name:"advertise_sending_failed"~msg:"sending advertise to {peer} failed: {trace}"~level:Warning("peer",P2p_peer.Id.encoding)~pp2:pp_print_top_error_of_trace("trace",Error_monad.trace_encoding)letswap_succeeded=declare_1~section~name:"swap_succeeded"~msg:"swap to {point} succeeded"~level:Info("point",P2p_point.Id.encoding)letswap_interrupted=declare_2~section~name:"swap_interrupted"~msg:"swap to {point} was interrupted: {trace}"~level:Debug("point",P2p_point.Id.encoding)~pp2:pp_print_top_error_of_trace("trace",Error_monad.trace_encoding)letswap_failed=declare_2~section~name:"swap_failed"~msg:"swap to {point} failed: {trace}"~level:Info("point",P2p_point.Id.encoding)~pp2:pp_print_top_error_of_trace("trace",Error_monad.trace_encoding)letswap_request_ignored=declare_1~section~name:"swap_request_ignored"~msg:"swap request ignored from {peer}"~level:Info("peer",P2p_peer.Id.encoding)letno_swap_candidate=declare_1~section~name:"no_swap_candidate"~msg:"no swap candidate for {peer}"~level:Info("peer",P2p_peer.Id.encoding)endmoduleP2p_connect_handler=structincludeInternal_event.Simpleletsection=["p2p";"connect_handler"]letdisconnected=declare_2~section~name:"disconnected"~msg:"disconnected: {peer} ({point})"~level:Debug("peer",P2p_peer.Id.encoding)~pp2:P2p_connection.Id.pp("point",P2p_connection.Id.encoding)letpeer_rejected=declare_0~section~name:"peer_rejected"~msg:"[private node] incoming connection from untrusted peer rejected"~level:Notice()letauthenticate_start=declare_2~section~name:"authenticate_start"~msg:"start authentication for point {point} ({direction})"~level:Debug("point",P2p_point.Id.encoding)("direction",Data_encoding.string)letauthenticate=declare_3~section~name:"authenticate"~msg:"authentication for point {point}. direction:{direction} -> {state}"~level:Debug("point",P2p_point.Id.encoding)("direction",Data_encoding.string)("state",Data_encoding.string)letauthenticate_status=declare_3~section~name:"authenticate_status"~msg:"authentication status for point {point} {type} -> {peer}"~level:Debug("type",Data_encoding.string)("point",P2p_point.Id.encoding)("peer",P2p_peer.Id.encoding)letauthenticate_status_peer_id_correct=declare_2~section~name:"authenticate_status_peer_id_correct"~msg:"expected peer id {peer} for this point {point}"~level:Notice("point",P2p_point.Id.encoding)("peer",P2p_peer.Id.encoding)letauthenticate_status_peer_id_incorrect=declare_4~section~name:"authenticate_status_peer_id_incorrect"~msg:"authenticate failed: {point} {type}. Expected '{expected_peer_id}', \
got '{peer_id}'"~level:Warning("type",Data_encoding.string)("point",P2p_point.Id.encoding)("expected_peer_id",P2p_peer.Id.encoding)("peer_id",P2p_peer.Id.encoding)letauthenticate_error=declare_2~section~name:"authentication_error"~msg:"authentication error for {point}: {errors}"~level:Debug("point",P2p_point.Id.encoding)~pp2:pp_print_top_error_of_trace("errors",Error_monad.trace_encoding)letconnection_rejected_by_peers=declare_4~section~name:"connection_rejected_by_peers"~msg:"connection to {point} rejected by peer {peer}. Reason {reason}. Peer \
list received: {points}"~level:Debug("point",P2p_point.Id.encoding)~pp2:P2p_peer.Id.pp_short("peer",P2p_peer.Id.encoding)~pp3:P2p_rejection.pp_short("reason",P2p_rejection.encoding)~pp4:(pp_first_elementP2p_point.Id.pp)("points",Data_encoding.listP2p_point.Id.encoding)letconnection_error=declare_2~section~name:"connection_error"~msg:"connection to {point} rejected by peer : {errors}"~level:Debug("point",P2p_point.Id.encoding)~pp2:pp_print_top_error_of_trace("errors",Error_monad.trace_encoding)letconnect_status=declare_2~section~name:"connect_status"~msg:"connection status for {point}: {state}"~level:Debug("state",Data_encoding.string)("point",P2p_point.Id.encoding)letconnect_error=declare_2~section~name:"connect_error"~msg:"connection error for point {point}, disconnecting : {errors}"~level:Debug("point",P2p_point.Id.encoding)("errors",Data_encoding.(convLazy.forceLazy.from_valstring))letconnect_close_error=declare_2~section~name:"connect_close_error"~msg:"connection error while closing for point {point}: {errors}"~level:Debug("point",P2p_point.Id.encoding)("errors",Data_encoding.(convLazy.forceLazy.from_valstring))letauthenticate_reject_protocol_mismatch=declare_8~section~name:"authenticate_reject_protocol_mismatch"~msg:"no common protocol with {peer}"~level:Debug("point",P2p_point.Id.encoding)("peer",P2p_peer.Id.encoding)("local_chain",Distributed_db_version.Name.encoding)("remote_chain",Distributed_db_version.Name.encoding)~pp5:(pp_first_elementDistributed_db_version.pp)("local_db_versions",Data_encoding.listDistributed_db_version.encoding)("remote_db_version",Distributed_db_version.encoding)~pp7:(pp_first_elementP2p_version.pp)("local_p2p_version",Data_encoding.listP2p_version.encoding)("remote_p2p_version",P2p_version.encoding)letnew_connection=declare_3~section~name:"new_connection"~msg:"new connection to {addr}:{port}#{peer}"~level:Info("addr",P2p_addr.encoding)("port",Data_encoding.optionData_encoding.uint16)("peer",P2p_peer.Id.encoding)lettrigger_maintenance_too_many_connections=declare_2~section~name:"trigger_maintenance_too_many_connections"~msg:"Too many connections : trigger maintenance \
(active_connections={active_connections} / \
max_connections={max_connections})"~level:Debug("active_connections",Data_encoding.int16)("max_connections",Data_encoding.int16)lettrigger_maintenance_too_few_connections=declare_2~section~name:"trigger_maintenance_too_few_connections"~msg:"Too few connections : trigger maintenance \
(active_connections={active_connections} / \
min_connections={min_connections})"~level:Debug("active_connections",Data_encoding.int16)("min_connections",Data_encoding.int16)endmoduleP2p_conn=structincludeInternal_event.Simpleletsection=["p2p";"conn"]letpeer_discovery_disabled=declare_0~section~name:"peer_discovery_disabled"~msg:"request for new peers interrupted because peer discovery disabled"~level:Warning()letunexpected_error=declare_1~section~name:"unexpected_error_answerer"~msg:"answerer unexpected error: {errors}"~level:Error~pp1:pp_print_top_error_of_trace("errors",Error_monad.trace_encoding)letswap_ack_received=declare_3~section~name:"swap_ack_received"~msg:"swap ack received from {emitter}"~level:Info("emitter",P2p_peer.Id.encoding)("proposed_point",P2p_point.Id.encoding)("proposed_peer",P2p_peer.Id.encoding)letswap_request_received=declare_3~section~name:"swap_request_received"~msg:"swap request received from {emitter}"~level:Info("emitter",P2p_peer.Id.encoding)("proposed_point",P2p_point.Id.encoding)("proposed_peer",P2p_peer.Id.encoding)letbytes_popped_from_queue=declare_2~section~name:"bytes_popped_from_queue"~msg:"{bytes} bytes message popped from queue {peer}"~level:Debug("bytes",Data_encoding.int31)("peer",P2p_peer.Id.encoding)letdisconnect=declare_1~section~name:"disconnect"~msg:"{peer} has been explicitly closed"~level:Debug("peer",P2p_peer.Id.encoding)letbootstrap_received=declare_1~section~name:"bootstrap_received"~msg:"bootstrap message received from {emitter}"~level:Debug("emitter",P2p_peer.Id.encoding)letadvertise_received=declare_2~section~name:"advertise_received"~msg:"advertise message received from {emitter}"~level:Debug("emitter",P2p_peer.Id.encoding)("points",Data_encoding.listP2p_point.Id.encoding)endmoduleP2p_fd=structincludeInternal_event.Simpleletsection=["p2p";"fd"]letcreate_fd=declare_1~section~name:"create_fd"~msg:"cnx:{connection_id}:create fd"~level:Debug("connection_id",Data_encoding.int31)letclose_fd=declare_4~section~name:"close_fd"~msg:"cnx:{connection_id}:close fd (reasons: {reasons}, stats : \
{nread}/{nwrit})"~level:Debug("connection_id",Data_encoding.int31)("reasons",Data_encoding.listP2p_disconnection_reason.encoding)("nread",Data_encoding.int31)("nwrit",Data_encoding.int31)letclose_fd_reason=declare_3~section~name:"close_fd_reason"~msg:"disconnected from {point}#{peer}: {reason}"~level:Info~pp1:Format.(pp_print_option~none:(funfmt()->pp_print_stringfmt"<Undefined_point>")P2p_point.Id.pp)~pp2:Format.(pp_print_option~none:(funfmt()->pp_print_stringfmt"<Undefined_peer_id>")P2p_peer.Id.pp_short)~pp3:Format.(pp_print_list~pp_sep:(funppf()->Format.fprintfppf", ")P2p_disconnection_reason.pp)("point",Data_encoding.optionP2p_point.Id.encoding)("peer",Data_encoding.optionP2p_peer.Id.encoding)("reason",Data_encoding.(listP2p_disconnection_reason.encoding))letclose_fd_unknown_reason=declare_2~section~name:"close_fd_unknown_reason"~msg:"disconnected from {point}#{peer}: unknown reason"~level:Info~pp1:Format.(pp_print_option~none:(funfmt()->pp_print_stringfmt"<Undefined_point>")P2p_point.Id.pp)~pp2:Format.(pp_print_option~none:(funfmt()->pp_print_stringfmt"<Undefined_peer_id>")P2p_peer.Id.pp_short)("point",Data_encoding.optionP2p_point.Id.encoding)("peer",Data_encoding.optionP2p_peer.Id.encoding)letclose_fd_error=declare_2~section~name:"close_fd_error"~msg:"socket related to connection {connection_id} failed to close:{error}"~level:Warning("connection_id",Data_encoding.int31)("error",Data_encoding.string)lettry_read=declare_2~section~name:"try_read"~msg:"cnx:{connection_id}:try read {length}"~level:Debug("connection_id",Data_encoding.int31)("length",Data_encoding.int31)lettry_write=declare_2~section~name:"try_write"~msg:"cnx:{connection_id}:try write {length}"~level:Debug("connection_id",Data_encoding.int31)("length",Data_encoding.int31)letread_fd=declare_3~section~name:"read_fd"~msg:"cnx:{connection_id}:read {nread} ({nread_total})"~level:Debug("connection_id",Data_encoding.int31)("nread",Data_encoding.int31)("nread_total",Data_encoding.int31)letwritten_fd=declare_3~section~name:"written_fd"~msg:"cnx:{connection_id}:written {nwrit} ({nwrit_total})"~level:Debug("connection_id",Data_encoding.int31)("nwrit",Data_encoding.int31)("nwrit_total",Data_encoding.int31)letconnect_fd=declare_2~section~name:"connect"~msg:"cnx:{connection_id}:connect {socket}"~level:Debug("connection_id",Data_encoding.int31)("socket",Data_encoding.string)letaccept_fd=declare_2~section~name:"accept"~msg:"cnx:{connection_id}:accept {socket}"~level:Debug("connection_id",Data_encoding.int31)("socket",Data_encoding.string)endmoduleP2p_maintainance=structincludeInternal_event.Simpleletsection=["p2p";"maintenance"]typemaintenance_trigger_motive=|Activation|Last_maintenance|External|TimerofPtime.span|Too_few_connections|Too_many_connectionsletmotive_encoding=letopenData_encodinginunion[case~title:"activation"~description:"This maintenance step was triggered by its initial activation"(Tag0)(obj1(req"kind"(constant"activation")))(functionActivation->Some()|_->None)(fun()->Activation);case~title:"last_maintenance"~description:"This maintenance step was triggered by the previous one"(Tag1)(obj1(req"kind"(constant"last_maintenance")))(functionLast_maintenance->Some()|_->None)(fun()->Last_maintenance);case~title:"timer"~description:"This maintenance step was triggered by periodically checks."(Tag2)(obj2(req"kind"(constant"timer"))(req"idle_time"Time.System.Span.encoding))(functionTimerspan->Some((),span)|_->None)(fun((),span)->Timerspan);case~title:"external_event"~description:"This maintenance step was triggered by an external event"(Tag3)(obj1(req"kind"(constant"external_event")))(functionExternal->Some()|_->None)(fun()->External);case~title:"too_few_connections"~description:"This maintenance step was urgently triggered by a lack of \
connections"(Tag4)(obj1(req"kind"(constant"too_few_connections")))(functionToo_few_connections->Some()|_->None)(fun()->Too_few_connections);case~title:"too_many_connections"~description:"This maintenance step was urgently triggered by an excess of \
connections"(Tag5)(obj1(req"kind"(constant"too_many_connections")))(functionToo_many_connections->Some()|_->None)(fun()->Too_many_connections);]letmotive_ppfmt=function|Activation->Format.pp_print_stringfmt"activation"|Last_maintenance->Format.pp_print_stringfmt"last maintenance"|External->Format.pp_print_stringfmt"external"|Timerspan->Format.fprintffmt"periodically checks every %a."Time.System.Span.pp_humspan|Too_few_connections->Format.pp_print_stringfmt"too few connections"|Too_many_connections->Format.pp_print_stringfmt"too many connections"letmaintenance_started=declare_1~section~name:"maintenance_started"~msg:"maintenance step started (triggered by:{motive})"~level:Info~pp1:motive_pp("motive",motive_encoding)letmaintenance_ended=declare_1~section~name:"maintenance_ended"~msg:"maintenance step ended after {duration}"~level:Info~pp1:Time.System.Span.pp_hum("duration",Time.System.Span.encoding)lettoo_few_connections=declare_1~section~name:"too_few_connections_maintenance"~msg:"too few connections ({connections})"~level:Notice("connections",Data_encoding.int31)lettoo_many_connections=declare_1~section~name:"too_many_connections_maintenance"~msg:"too many connections (will kill {connections})"~level:Debug("connections",Data_encoding.int31)endmoduleP2p_welcome=structincludeInternal_event.Simpleletsection=["p2p";"welcome"]letincoming_error=declare_2~section~name:"incoming_error"~msg:"incoming connection failed with {error}. Ignoring"~level:Debug~pp1:pp_print_top_error_of_trace("error",Error_monad.trace_encoding)("type",Data_encoding.string)letunexpected_error=declare_1~section~name:"unexpected_error_welcome"~msg:"unexpected error: {error}"~level:Error~pp1:pp_print_top_error_of_trace("error",Error_monad.trace_encoding)letunexpected_error_closing_socket=declare_1~section~name:"unexpected_error_closing_socket"~msg:"unexpected error while closing socket: {error}"~level:Error~pp1:pp_print_top_error_of_trace("error",Error_monad.trace_encoding)letincoming_connection_error=declare_1~section~name:"incoming_connection_error"~msg:"cannot accept incoming connections"~level:Error("exception",Error_monad.error_encoding)endmoduleP2p_socket=structincludeInternal_event.Simpleletsection=["p2p";"socket"]letnack_point_with_list=declare_2~section~name:"nack_point_with_list"~msg:"nack point {point} with point list {points}"~level:Debug("point",P2p_connection.Id.encoding)~pp2:(pp_first_elementP2p_point.Id.pp)("points",Data_encoding.listP2p_point.Id.encoding)letnack_point_no_point=declare_1~section~name:"nack_point_no_point"~msg:"nack point {point} (no point list due to p2p version)"~level:Debug("point",P2p_connection.Id.encoding)letsending_authentication=declare_1~section~name:"sending_authentication"~msg:"sending authentication to {point}"~level:Debug("point",P2p_point.Id.encoding)letconnection_closed=declare_1~section~name:"connection_closed"~msg:"connection closed to {peer}"~level:Debug("peer",P2p_peer.Id.encoding)letread_event=declare_2~section~name:"socket_read"~level:Debug~msg:"reading {bytes} bytes from {peer}"("bytes",Data_encoding.int31)("peer",P2p_peer.Id.encoding)letread_error=declare_0~section~name:"socket_read_error"~level:Debug~msg:"[read message] incremental decoding error"()letwrite_event=declare_2~section~name:"socket_write"~level:Debug~msg:"writing {bytes} to {peer}"("bytes",Data_encoding.int31)("peer",P2p_peer.Id.encoding)letwrite_error=declare_2~section~name:"socket_write_error"~level:Error~msg:"unexpected error when writing to {peer}: {error}"~pp1:pp_print_top_error_of_trace("error",Error_monad.trace_encoding)("peer",P2p_peer.Id.encoding)endmoduleP2p_io_scheduler=structincludeInternal_event.Simpleletsection=["p2p";"io-scheduler"]letconnection_closed=declare_3~section~name:"connection_closed_scheduler"~msg:"connection closed {direction} ({connection_id},{name})"~level:Debug("direction",Data_encoding.string)("connection_id",Data_encoding.int31)("name",Data_encoding.string)letunexpected_error=declare_4~section~name:"unexpected_error_scheduler"~msg:"unexpected error in connection ({direction}: {connection_id},{name}): \
{error}"~level:Error("direction",Data_encoding.string)("connection_id",Data_encoding.int31)("name",Data_encoding.string)~pp4:pp_print_top_error_of_trace("error",Error_monad.trace_encoding)letwait_quota=declare_1~section~name:"scheduler_wait_quota"~msg:"wait_quota ({name})"~level:Debug("name",Data_encoding.string)letwait=declare_1~section~name:"scheduler_wait"~msg:"wait ({name})"~level:Debug("name",Data_encoding.string)lethandle_connection=declare_3~section~name:"handle_connection"~msg:"handle {len} ({connection_id},{name})"~level:Debug("len",Data_encoding.int31)("connection_id",Data_encoding.int31)("name",Data_encoding.string)letcreate_connection=declare_2~section~name:"create_connection_scheduler"~msg:"create connection ({connection_id},{name})"~level:Debug("connection_id",Data_encoding.int31)("name",Data_encoding.string)letupdate_quota=declare_1~section~name:"update_quota"~msg:"update quota {name}"~level:Debug("name",Data_encoding.string)letreset_quota=declare_0~section~name:"reset_quota"~msg:"reset quota"~level:Debug()letcreate=declare_0~section~name:"create_connection"~msg:"create"~level:Debug()letregister=declare_1~section~name:"register_connection"~msg:"register_connection {connection_id}"~level:Debug("connection_id",Data_encoding.int31)letclose_error=declare_2~section~name:"close_connection_error"~msg:"close {connection_id} failed with {error}"~level:Warning("connection_id",Data_encoding.int31)("error",Error_monad.error_encoding)letclose=declare_1~section~name:"close_connection"~msg:"close {connection_id}"~level:Debug("connection_id",Data_encoding.int31)letshutdown=declare_1~section~name:"shutdown_connection"~msg:"shutdown {name}"~level:Info("name",Data_encoding.string)letshutdown_scheduler=declare_0~section~name:"shutdown_io_scheduler"~msg:"shutdown scheduler"~level:Info()endmoduleP2p_pool=structincludeInternal_event.Simpleletsection=["p2p";"pool"]letget_points=declare_3~section~name:"get_points"~msg:"getting points from {medium} of {source}: {point_list}"~level:Debug("medium",Data_encoding.string)("source",P2p_peer.Id.encoding)~pp3:(pp_first_elementP2p_point.Id.pp)("point_list",Data_encoding.listP2p_point.Id.encoding)letcreate_pool=declare_1~section~name:"create_pool"~msg:"create pool: known points {point_list}"~level:Debug~pp1:(pp_first_elementP2p_point.Id.pp)("point_list",Data_encoding.listP2p_point.Id.encoding)letparse_error=declare_1~section~name:"parse_error_peers"~msg:"failed to parse peers file: {error}"~level:Error~pp1:pp_print_top_error_of_trace("error",Error_monad.trace_encoding)letsaving_metadata=declare_1~section~name:"save_metadata"~msg:"saving metadata in {file}"~level:Info("file",Data_encoding.string)letsave_peers_error=declare_1~section~name:"save_error_peers"~msg:"failed to save peers file: {error}"~level:Error~pp1:pp_print_top_error_of_trace("error",Error_monad.trace_encoding)endmoduleDiscovery=structincludeInternal_event.Simpleletsection=["p2p";"discovery"]letcreate_socket_error=declare_0~section~name:"create_socket_error"~msg:"error creating a socket"~level:Debug()letmessage_received=declare_0~section~name:"message_received"~msg:"received discovery message"~level:Debug()letparse_error=declare_1~section~name:"parse_error"~msg:"failed to parse ({address})"~level:Debug("address",Data_encoding.string)letregister_new=declare_1~section~name:"register_new"~msg:"registering new point {point}"~level:Notice("point",P2p_point.Id.encoding)letunexpected_error=declare_2~section~name:"unexpected_error"~msg:"unexpected error in {worker} worker: {error}"~level:Error("worker",Data_encoding.string)~pp2:pp_print_top_error_of_trace("error",Error_monad.trace_encoding)letunexpected_exit=declare_0~section~name:"unexpected_exit"~msg:"Answer worker exited unexpectedly"~level:Error()letbroadcast_message=declare_0~section~name:"broadcast_message"~msg:"Broadcasting discovery message"~level:Debug()letbroadcast_error=declare_0~section~name:"broadcast_error"~msg:"Error broadcasting a discovery request"~level:Debug()endmoduleP2p=structincludeInternal_event.Simpleletsection=["p2p"]letactivate_layer=declare_0~section~name:"activate_layer"~level:Info~msg:"activate P2P layer"()letactivate_network=declare_1~section~name:"activate_network"~level:Info~msg:"activate id {peer}"("peer",P2p_peer.Id.encoding)letmessage_read=declare_1~section~name:"message_read"~level:Debug~msg:"message read from {peer}"("peer",P2p_peer.Id.encoding)letmessage_read_error=declare_1~section~name:"message_read_error"~level:Debug~msg:"error reading message from {peer}"("peer",P2p_peer.Id.encoding)letshutdown_welcome_worker=declare_0~section~name:"shutdown_welcome_worker"~level:Notice~msg:"shutting down the p2p's welcome worker..."()letshutdown_maintenance_worker=declare_0~section~name:"shutdown_maintenance_worker"~level:Notice~msg:"shutting down the p2p's network maintenance worker..."()letshutdown_connection_pool=declare_0~section~name:"shutdown_connection_pool"~level:Notice~msg:"shutting down the p2p connection pool..."()letshutdown_connection_handler=declare_0~section~name:"shutdown_connection_handler"~level:Notice~msg:"shutting down the p2p connection handler..."()letshutdown_scheduler=declare_0~section~name:"shutdown_scheduler"~level:Notice~msg:"shutting down the p2p scheduler..."()letmessage_sent=declare_1~section~name:"message_to_send"~level:Debug~msg:"message sent to {peer}"("peer",P2p_peer.Id.encoding)letsending_message_error=declare_2~section~name:"sending_message_error"~level:Debug~msg:"error sending message to {peer}: {error}"("peer",P2p_peer.Id.encoding)~pp2:pp_print_top_error_of_trace("error",Error_monad.trace_encoding)letmessage_trysent=declare_2~section~name:"message_trysent"~level:Debug~msg:"message trysent to {peer} resulting to {result}"("peer",P2p_peer.Id.encoding)("result",Data_encoding.bool)lettrysending_message_error=declare_2~section~name:"trysending_message_error"~level:Debug~msg:"error trysending message to {peer}: {error}"("peer",P2p_peer.Id.encoding)~pp2:pp_print_top_error_of_trace("error",Error_monad.trace_encoding)letbroadcast=declare_0~section~name:"broadcast"~level:Debug~msg:"message broadcast"()end