Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file shell_limits.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331(*****************************************************************************)(* *)(* Open Source License *)(* Copyright (c) 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. *)(* *)(*****************************************************************************)lettimeout_encoding=Time.System.Span.encodingtypeoperation_metadata_size_limit=Unlimited|Limitedofintletoperation_metadata_size_limit_encoding=letopenData_encodingindef"operation_metadata_size_limit"~title:"operation_metadata_size_limit"~description:"The operation metadata size limit"(union~tag_size:`Uint8[case~title:"unlimited"~description:"The metadata size is unlimited."(Tag0)(constant"unlimited")(functionUnlimited->Some()|_->None)(fun()->Unlimited);case~title:"limited"~description:"The metadata size is limited to the given integer's value (in \
bytes)."(Tag1)int31(functionLimitedi->Somei|_->None)(funi->Limitedi);])typeblock_validator_limits={protocol_timeout:Time.System.Span.t;operation_metadata_size_limit:operation_metadata_size_limit;}(* [default_operation_metadata_size_limit] is used to filter and
potentially discard a given metadata if its size exceed the cap. *)letdefault_operation_metadata_size_limit=Limited10_000_000letdefault_block_validator_limits={protocol_timeout=Time.System.Span.of_seconds_exn120.;operation_metadata_size_limit=default_operation_metadata_size_limit;}letblock_validator_limits_encoding=letopenData_encodinginconv(fun{protocol_timeout;operation_metadata_size_limit}->(protocol_timeout,operation_metadata_size_limit))(fun(protocol_timeout,operation_metadata_size_limit)->{protocol_timeout;operation_metadata_size_limit})(obj2(dft"protocol_request_timeout"timeout_encodingdefault_block_validator_limits.protocol_timeout)(dft"operation_metadata_size_limit"operation_metadata_size_limit_encodingdefault_block_validator_limits.operation_metadata_size_limit))typeprevalidator_limits={max_refused_operations:int;operation_timeout:Time.System.Span.t;operations_batch_size:int;disable_precheck:bool;}letdefault_prevalidator_limits={operation_timeout=Time.System.Span.of_seconds_exn10.;max_refused_operations=1000;operations_batch_size=50;disable_precheck=false;}letprevalidator_limits_encoding=letopenData_encodinginconv(fun{operation_timeout;max_refused_operations;operations_batch_size;disable_precheck;}->(operation_timeout,max_refused_operations,operations_batch_size,disable_precheck))(fun(operation_timeout,max_refused_operations,operations_batch_size,disable_precheck)->{operation_timeout;max_refused_operations;operations_batch_size;disable_precheck;})(obj4(dft"operations_request_timeout"timeout_encodingdefault_prevalidator_limits.operation_timeout)(dft"max_refused_operations"uint16default_prevalidator_limits.max_refused_operations)(dft"operations_batch_size"int31default_prevalidator_limits.operations_batch_size)(dft"disable_precheck"booldefault_prevalidator_limits.disable_precheck))typepeer_validator_limits={new_head_request_timeout:Time.System.Span.t;block_header_timeout:Time.System.Span.t;block_operations_timeout:Time.System.Span.t;protocol_timeout:Time.System.Span.t;}letdefault_peer_validator_limits={block_header_timeout=Time.System.Span.of_seconds_exn300.;block_operations_timeout=Time.System.Span.of_seconds_exn300.;protocol_timeout=Time.System.Span.of_seconds_exn600.;new_head_request_timeout=Time.System.Span.of_seconds_exn90.;}letpeer_validator_limits_encoding=letopenData_encodinginconv(fun{block_header_timeout;block_operations_timeout;protocol_timeout;new_head_request_timeout;}->(block_header_timeout,block_operations_timeout,protocol_timeout,new_head_request_timeout))(fun(block_header_timeout,block_operations_timeout,protocol_timeout,new_head_request_timeout)->{block_header_timeout;block_operations_timeout;protocol_timeout;new_head_request_timeout;})(obj4(dft"block_header_request_timeout"timeout_encodingdefault_peer_validator_limits.block_header_timeout)(dft"block_operations_request_timeout"timeout_encodingdefault_peer_validator_limits.block_operations_timeout)(dft"protocol_request_timeout"timeout_encodingdefault_peer_validator_limits.protocol_timeout)(dft"new_head_request_timeout"timeout_encodingdefault_peer_validator_limits.new_head_request_timeout))typesynchronisation_limits={latency:int;threshold:int}letsynchronisation_heuristic_encodingdefault_latencydefault_threshold=letopenData_encodinginconv(fun{latency;threshold}->(latency,threshold))(fun(latency,threshold)->{latency;threshold})(obj2(dft"latency"~description:"[latency] is the time interval (in seconds) used to determine if \
a peer is synchronized with a chain. For instance, a peer whose \
known head has a timestamp T is considered synchronized if T >= \
now - latency. This parameter depends on the baking rate and the \
latency of the network."uint16default_latency)(dft"synchronisation_threshold"~description:"The minimal number of peers this peer should be synchronized with \
in order to be bootstrapped."uint8default_threshold))typechain_validator_limits={synchronisation:synchronisation_limits}letdefault_chain_validator_limits={synchronisation={latency=150;threshold=4}}letchain_validator_limits_encoding=letopenData_encodinginconv(fun{synchronisation}->synchronisation)(funsynchronisation->{synchronisation})(* Use a union to support both the deprecated
bootstrap_threshold and the new synchronisation_threshold
options when parsing. When printing, use the new
synchronisation_threshold option. *)(union[case~title:"synchronisation_heuristic_encoding"Json_only(synchronisation_heuristic_encodingdefault_chain_validator_limits.synchronisation.latencydefault_chain_validator_limits.synchronisation.threshold)(funx->Somex)(funx->x);case~title:"legacy_bootstrap_threshold_encoding"Json_only(obj1(dft"bootstrap_threshold"~description:"[DEPRECATED] Set the number of peers with whom a chain \
synchronisation must be completed to bootstrap the node."uint84))(fun_->None)(* This is used for legacy *)(funx->{threshold=x;latency=default_chain_validator_limits.synchronisation.latency;});])typelimits={block_validator_limits:block_validator_limits;prevalidator_limits:prevalidator_limits;peer_validator_limits:peer_validator_limits;chain_validator_limits:chain_validator_limits;history_mode:History_mode.toption;}letdefault_limits={block_validator_limits=default_block_validator_limits;prevalidator_limits=default_prevalidator_limits;peer_validator_limits=default_peer_validator_limits;chain_validator_limits=default_chain_validator_limits;history_mode=None;}letlimits_encoding=letopenData_encodinginconv(fun{peer_validator_limits;block_validator_limits;prevalidator_limits;chain_validator_limits;history_mode;}->(peer_validator_limits,block_validator_limits,prevalidator_limits,chain_validator_limits,history_mode))(fun(peer_validator_limits,block_validator_limits,prevalidator_limits,chain_validator_limits,history_mode)->{peer_validator_limits;block_validator_limits;prevalidator_limits;chain_validator_limits;history_mode;})(obj5(dft"peer_validator"peer_validator_limits_encodingdefault_peer_validator_limits)(dft"block_validator"block_validator_limits_encodingdefault_block_validator_limits)(dft"prevalidator"prevalidator_limits_encodingdefault_prevalidator_limits)(dft"chain_validator"chain_validator_limits_encodingdefault_chain_validator_limits)(opt"history_mode"History_mode.encoding))