Skip to content

Conversation

@JanProvaznik
Copy link
Member

Fixes #

Context

Changes Made

Testing

Notes

Copilot AI and others added 12 commits November 25, 2025 14:21
- Created TaskHostNodeKey record struct combining HandshakeOptions and NodeId
- Updated NodeProviderOutOfProcTaskHost to use TaskHostNodeKey as dictionary keys
- Added reverse mapping from communication nodeId to TaskHostNodeKey for packet routing
- Updated TaskHostTask to use TaskHostNodeKey instead of bit-packed int
- Removed 256-node limitation for multithreaded builds
- Added unit tests for TaskHostNodeKey

Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
…of hash

Address code review feedback: Use Interlocked.Increment for generating
unique communication node IDs instead of GetHashCode() to avoid potential
hash collisions.

Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
Address code review feedback: Use int keys directly for packet routing
dictionaries (_nodeIdToPacketFactory and _nodeIdToPacketHandler) instead
of going through an intermediate TaskHostNodeKey lookup. The TaskHostNodeKey
is now only used where we need to identify nodes by their logical identity
(HandshakeOptions + scheduledNodeId) for node existence checks.

Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
Reverts the simplification made in the previous commit per reviewer request.
The intermediate dictionary provides cleaner lookup from communication node IDs
to TaskHostNodeKey for packet routing.

Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
Apply reviewer feedback for O(1) packet routing performance:
- Use int keys (_nodeIdToPacketFactory, _nodeIdToPacketHandler) for packet routing
- Keep _nodeContexts keyed by TaskHostNodeKey for acquisition logic
- Remove intermediate _nodeIdToNodeKey dictionary
- Use _activeNodes with int (nodeId) instead of TaskHostNodeKey

This gives type-safe Keys for managing node lifecycle while maintaining
direct Integer lookups for high-frequency packet routing.

Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
- Add VerifyThrow in DisconnectFromHost to verify context exists
- Restore assert in CreateNode to verify no duplicate context
- Eliminate linear search in NodeContextTerminated by adding _nodeIdToNodeKey reverse mapping
- Consolidate to single NodeContextTerminated(int nodeId) method
- Keep SendData(int, INodePacket) throwing NotImplementedException (required by interface but not used for task hosts)

Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com>
…rocTaskHost.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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.

1 participant