You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Populate peerStates with zero-values for mesh peers (fallback to fanout when mesh is empty).
Invoke PublishActionsFn, iterate yielded actions.
Per action: build Rpc.PartialMessagesExtension{topicID, groupID, partialMessage?, partsMetadata?}, enqueue through GossipRpcPartsQueue (do NOT bypass — PR Add partial message support for gossipsub #433 got this wrong).
Apply nextPeerState atomically.
Enforce spec MUST: omit partialMessage when peer supports sending partial but did not request it on this topic.
Not in scope here
Routing-layer changes (suppress full-msg, suppress IDONTWANT, replace IHAVE) are tracked separately — see the routing-integration sub-issue of #435.
Implements the wire-level partial-message send/receive flow (Steps 3 + 4 of #435).
Scope
Inbound dispatch (Step 3)
Replace the stub at
GossipRouter.kt:476(processPartialMessageExtension) with the full flow:ControlExtensions.partialMessages.GroupState(topic, groupId), mark as peer-initiated.handler.onIncomingRpc(from, peerStates, rpc).Outbound publish (Step 4)
Add
Gossip.publishPartial(topic, groupId, actions)entry point:GroupState, reset TTL.peerStateswith zero-values for mesh peers (fallback to fanout when mesh is empty).PublishActionsFn, iterate yielded actions.Rpc.PartialMessagesExtension{topicID, groupID, partialMessage?, partsMetadata?}, enqueue throughGossipRpcPartsQueue(do NOT bypass — PR Add partial message support for gossipsub #433 got this wrong).nextPeerStateatomically.partialMessagewhen peer supports sending partial but did not request it on this topic.Not in scope here
Routing-layer changes (suppress full-msg, suppress IDONTWANT, replace IHAVE) are tracked separately — see the routing-integration sub-issue of #435.
Reference
Design:
docs/partial-messages.md§4.3, §5, §6.2 (lands with the first PR on #435).go-libp2p:
extensions.go:221,partialmsgs.go:216, 303.