Skip to content

Conversation

@0blu
Copy link
Collaborator

@0blu 0blu commented Aug 29, 2024

🍰 Pullrequest

This pr will replace ACE with a self-made but highly performant native solution.

The implementation was inspired by boost asio, meaning that everything is asynchronous and requires a callback.
Users have to guarantee the lifetime of the socket throughout the transaction (aka. use std::shared_ptr<>).

Since cMaNGOS and TrinityCore already switched to Boost and this native IO implementation is very similar to Boost, some similarities in the network code can be found and compared against.

Native system function are used. There are slightly different backend implementations on each OS:

  • Windows IOCP
  • Linux epoll (with the possibility to add io_uring support)
  • macOS kqueue

Want to test it? 🧪

Just merge these two commits into your repo.
https://github.com/0blu/vmangos-core/tree/native-squash-merge-2024-11-17
As soon this native branched is squashed-merged with development you can easily rebase->drop->cherry-pick it with the new official commit.

Todo / Checklist

  • Test on low pop server
  • Test on medium pop server (3k-6k)
  • Update build guide

0blu and others added 30 commits August 27, 2024 21:22
Allow applications like Putty to connect to the server
Native Branch: Remote Access Terminal without ACE
Native Branch: MaNGOS gSOAP without ace
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CPP A issue / PR which references CPP code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants