Skip to content

feat: modernization phase 3 PR3#47

Merged
dsmurfin merged 1 commit into
modernization-planfrom
modernization-phase4-pr3
Jul 18, 2026
Merged

feat: modernization phase 3 PR3#47
dsmurfin merged 1 commit into
modernization-planfrom
modernization-phase4-pr3

Conversation

@dsmurfin

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI review requested due to automatic review settings July 18, 2026 18:01

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR continues the modernization work by converting sACNDiscoveryReceiver from a GCD/delegate-based receiver to a Swift Concurrency actor pinned to the shared NIO event loop, exposing discovery/events/debug output via AsyncStreams and adding characterization + gated loopback tests.

Changes:

  • Refactor sACNDiscoveryReceiver into an actor with async lifecycle/mutation APIs and AsyncStream outputs (discovery, events, debugLog), including a lifecycle “busy” gate (receiverBusy) and NIO scheduled heartbeat.
  • Remove the discovery receiver delegate protocol and update docs/README to reflect the new actor/stream-based API.
  • Add packet fixtures and new tests (seam-based characterization + gated end-to-end loopback) for paged assembly, malformed packet logging, and source-loss behavior.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
File Description
Tests/sACNKitTests/PacketFixtures.swift Adds a universe-discovery packet builder fixture for injection-based discovery testing.
Tests/sACNKitTests/DiscoveryReceiverTests.swift Adds seam-based characterization tests plus an env-gated loopback test for actor-path inbound delivery.
Sources/sACNKit/Receiver/sACNReceiver.swift Adds receiverBusy validation error for in-flight lifecycle/reconfiguration operations.
Sources/sACNKit/Receiver/sACNDiscoveryReceiver.swift Converts discovery receiver to an actor with async lifecycle, stream outputs, scheduled heartbeat, and test seams.
Sources/sACNKit/Receiver/DiscoveryReceiverSource.swift Removes dead lastNotifiedUniverseCount state from discovery source tracking.
Sources/sACNKit/Receiver/Delegate/sACNDiscoveryReceiverDelegate.swift Deletes the delegate protocol now superseded by AsyncStream outputs.
Sources/sACNKit/Documentation.docc/sACNKit.md Updates package overview to reflect sACNDiscoveryReceiver as an actor with streams.
README.md Updates public-facing usage docs and adds an actor/stream example for discovery receiver.
docs/modernization/phase-4.md Updates Phase 4 PR3 notes with completed implementation details and testing coverage.
AGENTS.md Updates repo structure notes to reflect discovery receiver’s actor/stream API.
.claude/rules/timing.md Updates timing rules to reflect discovery receiver heartbeat running via NIO scheduled tasks.
.claude/rules/threading.md Updates threading guidance to reflect discovery receiver no longer being a GCD receiver component.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@dsmurfin
dsmurfin merged commit bed8d38 into modernization-plan Jul 18, 2026
8 checks passed
@dsmurfin
dsmurfin deleted the modernization-phase4-pr3 branch July 18, 2026 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants