Expand description
SvsServiceDiscovery — SVS-backed push service-record notifications.
Joins the SVS sync group at /ndn/local/sd/updates/ so that service record
changes are pushed to all group members rather than requiring periodic
pulls. Nodes that only need occasional browsability continue to use
ServiceDiscoveryProtocol via /ndn/local/sd/services/.
§Architecture
The SVS background task is fully async (join_svs_group), but
DiscoveryProtocol hooks are synchronous. The bridge uses two
tokio::sync::mpsc channels:
on_inbound ──► incoming_tx ──► SVS task (merge, detect gaps)
SVS task ──► outgoing_tx ──► on_tick drain ──► ctx.send_on (all neighbor faces)
SVS updates ──► update_rx ──► on_tick drain ──► express fetch Interestson_tick performs non-blocking draining of both channels using
try_recv(). This keeps the synchronous discovery hooks from blocking
while still processing all pending work in bounded time.
§Packet routing
All SVS Sync Interests arrive under /ndn/local/sd/updates/svs/….
This protocol claims /ndn/local/sd/updates/, so CompositeDiscovery
routes these packets here before the forwarding pipeline sees them.
Service record Data packets arrive under /ndn/local/sd/services/ and
are handled by ServiceDiscoveryProtocol; this protocol only handles the
sync control plane.
Structs§
- SvsService
Discovery - SVS-backed push service-record discovery.