Skip to content
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

v3 Stable Release #35

Merged
merged 79 commits into from
Aug 21, 2023
Merged

v3 Stable Release #35

merged 79 commits into from
Aug 21, 2023

Conversation

john-bv
Copy link
Member

@john-bv john-bv commented Dec 12, 2022

This version aims to improve the API from that of v2 to resolve issues like:

  • API is not user-friendly, and clients are isolated to the server thread.
  • v2 requires a lot of thread locking to share information, which makes it a headache to use.
  • Overall v2 is not easy to use, nor is it elegant
  • Make use of rusts async model, and setup for Allow other async runtimes such as async-std #26

Current Changelog for v3

  • netrex_events has been dropped and you should use the newer Connection::recv_event() channel instead.

  • rakrs::start has been dropped, you should use rakrs::Listener::bind() in conjunction with rakrs::Listener::start() instead.

  • Every packet sent to the client is now exposed with Connection::recv() with the exception of the handshake sequence. This will allow you to write your own handlers for certain packets. However keep in mind, the protocol specific packets such as Ack, Nack, and disconnects are not exposed.

  • The internal module has been completely nuked and replaced with SendQueue and RecvQueue's.

    • Frame fragmentation is now more elaborate and elegant.
  • ACK, and NACK are now handled within their queues respectively, and follow a TimeRecoveryQueue.

  • Added TimeRecoveryQueue which is a queue with a max capacity. This queue is elegant and a packet within the queue will expire only if one of the following conditions is met:

    • The packet is pushed off the queue because newer packets have been added.

    • The packet has not been removed and it's been in the queue for too long of a duration.

  • Added RecoveryQueue which is a smart queue that will remove a index if and only if a newer packet is added that shifts the queue or if the retry attempts are greator than the value set within the queue, (which is 3 by default),


Please see: https://github.com/orgs/NetrexMC/projects/4 for a up to date road map.

@john-bv john-bv marked this pull request as draft December 12, 2022 03:38
@john-bv john-bv added Complete The code review for this issue has been completed; and is now being finalized. Core A core related issue or PR and removed In Progress We are working on this labels Aug 21, 2023
@john-bv john-bv added this to the December milestone Aug 21, 2023
@john-bv john-bv merged commit 0f4014b into master Aug 21, 2023
8 checks passed
@john-bv john-bv deleted the v3 branch August 21, 2023 02:14
@john-bv
Copy link
Member Author

john-bv commented Aug 21, 2023

🎉 🦀

@john-bv john-bv restored the v3 branch August 21, 2023 02:14
@john-bv john-bv deleted the v3 branch April 28, 2024 19:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Complete The code review for this issue has been completed; and is now being finalized. Core A core related issue or PR
Projects
No open projects
Status: Done
2 participants