Optionaloptions: PropagationNodeOptions = {}Builds the lxmf.propagation announce app_data advertising this node's
limits and costs (LXMRouter.get_propagation_node_app_data).
Optionaltimebase: number = ...
Unix seconds; defaults to now.
Builds the responseGenerator for registerRequestHandler("/offer", …).
Builds the responseGenerator for registerRequestHandler("/get", …).
Adapts the Link handler signature to handleGetRequest.
Handles a /get REQUEST (LXMRouter.message_get_request).
data is the decoded [want, have] or [want, have, transferLimitKb]:
[null, null] → list of available transient_ids for the requester.[wants[], haves[]] → purge haves, return base lxmf_data for wants.[null, haves[]] → purge-ack only (returns []).Returns a value to be msgpack-encoded as the response: an array of transient_ids, an array of lxmf_data blobs, or a peer error code.
Handles a /offer REQUEST from a peering propagation node
(LXMRouter.offer_request).
data is [peering_key, [transient_id, …]]. The peering key is validated
against peering_id = receivingIdentityHash ‖ offeringIdentityHash at this
node's own peering cost. The node then reports which offered messages it
does not yet have:
false → it already has every offered message.true → it wants every offered message.[ids] → it wants exactly that subset.the offer response, or a peer-error code.
Ingests a list of propagation blobs received in a submit/sync Resource container (LXMRouter.propagation_resource_concluded → lxmf_propagation).
Each blob is lxmf_data || stamp. Stamps are validated against the node's
minimum cost; survivors are deduplicated, then either locally delivered
(if addressed to one of this node's identities) or stored. Returns the
count of newly stored entries and the count of locally delivered entries.
Minimum accepted stamp value = max(0, cost − flexibility).
Periodic maintenance — prunes aged entries (when messageTtlSecs is set)
and re-runs capacity eviction. A runner calls this hourly (Python calls
clean_messages from its job loop).
Server-side propagation logic. Owns the MessageStore and implements the
/getrequest-response exchange and the ingestion of submitted blobs.