Capabilities: implement event queue and caps-to-packet processing #55

Closed
opened 2026-08-08 08:19:17 +00:00 by hugo · 1 comment
Owner

Objective

Implement seed-cap discovery, event queue polling/acknowledgment, message decoding, caps-to-packet translation, recovery, and shutdown.

Deliverables

  • Preserve LLSD request/response shapes, queue IDs, ack progression, timeouts, retries, event ordering, unknown events, and reconnect behavior.
  • Bound event payloads and queue fan-out.
  • Route decoded events through the same typed dispatch contracts as UDP.

Validation

  • Event queue and message-decoder tests pass.
  • Cancellation ends polling promptly without lost owned tasks.
  • Recorded event fixtures replay deterministically.

Prerequisite

Wire codegen and the foundational implementation milestones are complete; the fixed API/test gates remain authoritative.

Project constraints

  • Native Rust networking only; no C# bridge, helper service, subprocess, or fallback.
  • Keep mapped APIs and translated assertions fixed, use bounded resources, and never log secrets.
  • Validate offline with deterministic fake servers before live-grid use and update docs/coverage evidence.
## Objective Implement seed-cap discovery, event queue polling/acknowledgment, message decoding, caps-to-packet translation, recovery, and shutdown. ## Deliverables - Preserve LLSD request/response shapes, queue IDs, ack progression, timeouts, retries, event ordering, unknown events, and reconnect behavior. - Bound event payloads and queue fan-out. - Route decoded events through the same typed dispatch contracts as UDP. ## Validation - Event queue and message-decoder tests pass. - Cancellation ends polling promptly without lost owned tasks. - Recorded event fixtures replay deterministically. ## Prerequisite Wire codegen and the foundational implementation milestones are complete; the fixed API/test gates remain authoritative. ## Project constraints - Native Rust networking only; no C# bridge, helper service, subprocess, or fallback. - Keep mapped APIs and translated assertions fixed, use bounded resources, and never log secrets. - Validate offline with deterministic fake servers before live-grid use and update docs/coverage evidence.
hugo added this to the 08 - Networking and client lifecycle milestone 2026-08-08 08:19:17 +00:00
hugo added the enhancement label 2026-08-08 08:19:17 +00:00
Author
Owner

Implemented and pushed in aa269f1.

Native Rust implementation now covers seed-cap discovery, the complete reference capability request list, URI registration, bounded EventQueueGet polling, ack/done progression, ordered event delivery, transient recovery, terminal statuses, deterministic jitter, reconnect/start behavior, prompt cancellation, graceful shutdown, joined task ownership, typed CAPS dispatch, and caps-to-packet fallback. MessageUtils now decodes every named event in the C# reference switch with native LLSD codecs, including polymorphic search/upload/object-media variants, display names, physics, attachment resources, and bulk inventory. Unknown or malformed events remain safe and use packet fallback where a packet schema exists. Documentation and shim coverage were updated.

Verified in isolation:

  • 5 event_queue tests passed
  • 2 caps tests passed
  • 7 message_decoder tests passed
  • 3 network_manager dispatch/lifetime tests passed
  • 11 caps_http integration tests passed
  • packet_osd, generated codec, and relevant compatibility tests passed
  • API compile fixture passed
  • generator drift check passed
  • cargo clippy -p libremetaverse --lib --no-deps --locked -j1 -- -D warnings passed on Rust 1.97
  • rustdoc with -D warnings passed
  • cargo check --workspace --all-targets --locked -j1 passed

The broad pre-created lib test run has 65 passing tests and 70 expected failures confined to unimplemented later-milestone appearance, archive, animesh, inventory/AIS, and world/estate domains; no #55 test failed.

Implemented and pushed in aa269f1. Native Rust implementation now covers seed-cap discovery, the complete reference capability request list, URI registration, bounded EventQueueGet polling, ack/done progression, ordered event delivery, transient recovery, terminal statuses, deterministic jitter, reconnect/start behavior, prompt cancellation, graceful shutdown, joined task ownership, typed CAPS dispatch, and caps-to-packet fallback. MessageUtils now decodes every named event in the C# reference switch with native LLSD codecs, including polymorphic search/upload/object-media variants, display names, physics, attachment resources, and bulk inventory. Unknown or malformed events remain safe and use packet fallback where a packet schema exists. Documentation and shim coverage were updated. Verified in isolation: - 5 event_queue tests passed - 2 caps tests passed - 7 message_decoder tests passed - 3 network_manager dispatch/lifetime tests passed - 11 caps_http integration tests passed - packet_osd, generated codec, and relevant compatibility tests passed - API compile fixture passed - generator drift check passed - cargo clippy -p libremetaverse --lib --no-deps --locked -j1 -- -D warnings passed on Rust 1.97 - rustdoc with -D warnings passed - cargo check --workspace --all-targets --locked -j1 passed The broad pre-created lib test run has 65 passing tests and 70 expected failures confined to unimplemented later-milestone appearance, archive, animesh, inventory/AIS, and world/estate domains; no #55 test failed.
hugo closed this issue 2026-08-09 16:50:06 +00:00
Sign in to join this conversation.