Skip to content

UTP: Add proper support for channels #986

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

simon-lemay-unity
Copy link
Contributor

And some minor bugfixes related to fragmentation.

To support channels, three new pipelines are created when setting up the UTP driver. When sending a message, the MLAPI NetworkDelivery associated with the channel is determined and from that, we select the appropriate pipeline to send the message through.

This PR also includes some tests for channels. Note that aside from fragmentation, the actual behaviour of the different channels (e.g. reliability, sequencing) is not tested. It is assumed that whatever pipeline we are sending traffic on is already well-tested in UTP itself. The reason we're testing fragmentation is that it's easy to do, but also because UTPTransport now exposes a MaximumMessageLength constant and we want to ensure messages of that specific size are handled correctly.

The UTPTransport.Send method would throw a NullReferenceException
exception when passed default(ArraySegment<byte>) as the message data.
Now it simply sends an empty message to its remote host (not a terribly
useful feature, but better than an exception).
The fragmentation pipeline was set up to handle messages up to 6KB in
length, but the receive buffer was only 1KB long. Messages longer than
that were just ignored (although an error message was logged).
The transport now selects an appropriate pipeline according to the
delivery level of the channel, rather than send everything on the
default unreliable pipeline.
@simon-lemay-unity simon-lemay-unity merged commit 6322bbb into feature/initial-relay-utp Jul 30, 2021
@simon-lemay-unity simon-lemay-unity deleted the feature/initial-relay-utp-channels branch July 30, 2021 16:44
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.

3 participants