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

Native Branch | Use modern networking sockets for low CPU usage and high performant code #2680

Merged
merged 11 commits into from
Jun 22, 2024

Conversation

0blu
Copy link
Collaborator

@0blu 0blu commented Jun 22, 2024

🍰 Pullrequest

vMaNGOS may be transitioning to its own I/O implementation.
This pull request aims to the networking code of realmd with a more modern version, similar to those used in cMaNGOS and TrinityCore.
The networking backend is inspired by Boost::ASIO and Nginx.
The usage of it is inspired by cMaNGOS.

Using winsock2's async interface results in less CPU time and a more parallel and performant code.
Currently every event is handled in the main thread. That can be changed later.

@0blu
Copy link
Collaborator Author

0blu commented Jun 22, 2024

In future commits there will be a UNIX implementation with epoll and some namespace refactoring.
I could also use io_urings on UNIX, but there are still relatively modern and I don't want to implement two methods for UNIX.

@ratkosrb
Copy link
Contributor

Can you also implement the config option MaxSessionDuration? This is a time limit how long clients are allowed to remain connected to realmd. They should be disconnected after this time, to prevent idle connections.

if (time_t timer = sConfig.GetIntDefault("MaxSessionDuration", 300))

@0blu 0blu changed the title Native Branch | WIP: Use modern networking sockets for low CPU usage and high performant code Native Branch | Use modern networking sockets for low CPU usage and high performant code Jun 22, 2024
@ratkosrb ratkosrb merged commit 5fb737a into vmangos:native Jun 22, 2024
0 of 3 checks passed
0blu added a commit to 0blu/vmangos-core that referenced this pull request Sep 14, 2024
* Realmd: Native windows implementation of BufferedSocket.

* Reimplement config loading without using ACE.

* Make IsLineEndChar static.

* Use modern networking sockets for low CPU usage and high performant code (vmangos#2680)

* Make m_ServiceStatus volatile

* Add type size to eAuthCmd  and AuthResult

* NativeIO: Realmd: First impl of `LogonChallenge` just like cMangos

Currently only windows support. Using legacy `::select` function. Must use IOCTL in the future.

* Add "Network" to log type string

* Make m_ServiceStatus volatile (again)

* SRP6 add const to parameter

* Database add DbExecMode to force sync statements (prevent race condition)

* Reimplement most AuthSocket handers async (like cMangos)

* Use high performance winsock2 async sockets

The implementation is inspired by Boost::ASIO and Nginx

* Async networking: Split declaration and definition inside header

* Async networking: Move implementation into own folder

* Fix realmd build.

* Remove commented out stuff.

* Fix crash on login.

* Fix reconnecting to realmd.

* No need to endian convert build twice.

* Add MaxSessionDuration to realmd (vmangos#2687)

* Make m_ServiceStatus volatile

* Add type size to eAuthCmd  and AuthResult

* NativeIO: Realmd: First impl of `LogonChallenge` just like cMangos

Currently only windows support. Using legacy `::select` function. Must use IOCTL in the future.

* Add "Network" to log type string

* Make m_ServiceStatus volatile (again)

* SRP6 add const to parameter

* Database add DbExecMode to force sync statements (prevent race condition)

* Reimplement most AuthSocket handers async (like cMangos)

* Use high performance winsock2 async sockets

The implementation is inspired by Boost::ASIO and Nginx

* Async networking: Split declaration and definition inside header

* Async networking: Move implementation into own folder

* Fix ATTR_PRINTF on PExecute with DbExecMode

* Add function IO::Multithreading::CreateThread with nameable threads

* Add IO::Timer::AsyncSystemTimer

* Change RunEventLoop error handling

* Remove Timer was already removed error log

* Add comment explaining why we cant use `SetThreadDescription`

* Remove `MaNGOS::` prefix from `IO::` namespace

* Include stirng header in CreateThread.h

* Add CMD_XFER_ACCEPT support (vmangos#2691)

* Make m_ServiceStatus volatile

* Add type size to eAuthCmd  and AuthResult

* NativeIO: Realmd: First impl of `LogonChallenge` just like cMangos

Currently only windows support. Using legacy `::select` function. Must use IOCTL in the future.

* Add "Network" to log type string

* Make m_ServiceStatus volatile (again)

* SRP6 add const to parameter

* Database add DbExecMode to force sync statements (prevent race condition)

* Reimplement most AuthSocket handers async (like cMangos)

* Use high performance winsock2 async sockets

The implementation is inspired by Boost::ASIO and Nginx

* Async networking: Split declaration and definition inside header

* Async networking: Move implementation into own folder

* Fix ATTR_PRINTF on PExecute with DbExecMode

* Add function IO::Multithreading::CreateThread with nameable threads

* Add IO::Timer::AsyncSystemTimer

* Change RunEventLoop error handling

* Remove Timer was already removed error log

* Add comment explaining why we cant use `SetThreadDescription`

* Remove `MaNGOS::` prefix from `IO::` namespace

* Add TrinityCore's EnumFlag implementation

Reference: https://github.com/TrinityCore/TrinityCore/blob/a0e5f9db7e3fdf70ec70533e64e5653f04eeac16/src/common/Utilities/EnumFlag.h

* Fix windows #include

* Please split `socket->Write(...)` calls

* Async socket add Write for `uint8[]`

* Update AsyncServerListener.h

* Update AuthCodes.h

* Add namespace `IO::Filesystem`

* ByteBuffer add `append(std::vector<uint8> const& src)`

* Realmd: Remove old PatchHandler

* Add new `ClientPatchCache`

* Realmd: Add support for `CMD_XFER_ACCEPT`

* Remove ACE_TYPES from `XFER_DATA_CHUNK`

* Add `IO::Networking::` `IpAddress` and `IpEndpoint` structures

* Add `IO::Networking::IsInSameSubnet`

* Add function `AsyncSocket<T>::GetRemoteEndpoint()` and `GetRemoteIpString()`

* Make ReamList use new `IO::Networking::IpAddress`

* Fix `IO::Filesystem::GetAllFilesInFolder` comment

* Remove semicolon after include.

* Fix build error in EnumFlag.

* Fix AuthSocket build.

* Code style fixes.

* NativeIO: Add Linux support (vmangos#2696)

* Create NativeAliases.h

* IO::Networking moved some files around

* `IocpOperationTask` as member of `AsyncSocket` to avoid `new` memory allocation

* Native IO: Able to compile empty impl on linux

* Fix windows build

* Native IO: Linux add fs support

* Native IO: Linux, able to connect

* Fix uninitialized `m_sessionDurationTimeout`

* Fix SO_REUSEADDR on linux

* Sortof impl of unix epoll AsyncSocket

* Add own implementation of `AsyncSystemTimer`

* Code Style

* Native IO: Add all other Write handlers

* NativeIO: Linux add EPOLLRDHUP for disconnect requests

* Fix windows build

* NativeIO: Windows Code Style

* Fix EnumFlags

* Update comment

* Native networking for mangosd (vmangos#2707)

* Native mangosd: Able to "join" the game

* Add ring buffer for packets. Encryption is done in IO thread

* Rename all threads

* Add Reactor style native IO like Boost or ACE

* Add a WorldSocketMgt just like `TrinityCore`

* Readd realmd support with new IoContext stuff

* New IO ctx now compiles under linux (still some runtime bugs)

* Native: Linux use eventfd for context switch notify

* Fix windows build

* Fix usage of `std::shared_ptr<WorldSocket>`

* Make m_sendQueueIsRunning atomic

* Fix duplicated line

* Fix duplicated maiev scan in debug (vmangos#2706)

* Remove lock free packet send queue for now

* Fix linux build

* Initialize some variables at `WorldSession` to make clang-tidy happy

* NativeIO: Use std::atomic to be lock free

* Native: Also make windows IO lock free

* Fix sql field index comment

* Remove unnecessary includes

* Update mangosd.conf.dist.in

* Minor changes to native IO code and comments

* Fix initial macos bugs

* Fix some comments

* Inline MANGOS_ASSERT condition

* Add JetBrain IDE code style defaults (vmangos#2709)

* Native IO: Fix macOS build

* Reformat `mangos/Master.cpp` and `realmd/Main.cpp`

* Fix incorrect client ip realmd -> mangosd check

* Re-add `HandlePing` support for older clients

* Reformat `WorldSocket.cpp`

* Native: World/ioCtx shutdown fix

* AsyncSystemTimer: Fix potential notify loss

* Minor changes to native branch (vmangos#2715)

* NativeIO: Remove unused parts of the code

* WorldSession do `FinalizeSession()` on socket

* Rename variable

* Native IO: Don't get the filePath from a handle

* Reformat AsyncIoOperation.h

* Use inet_ntop instead inet_ntoa for thread-safety

* Fix visibility in AsyncSocket

* Clear CONTEXT_PRESENT when StopPendingTransactions

* Fix build with Visual Studio 2015 (vmangos#2717)

* Remove `::inet_ntop` dependency on windows

We cant use ::inet_ntoa(...) because it's not thread safe.
We cant use ::inet_ntop(...) because it's not WinXP compatible.
So we have to do it ourselves.

* Fix Windows `AsyncSystemTimer` on 32bit

* Fix `EnumFlags.h` on VS14

* Add comment to `GetRemoteIpString`

* Add max size to `m_sendQueue`

* Use backward library for stacktrace.

* Fix extractors build.

* Add missing includes.

* More missing includes.

* Replace ACE_TSS in Database with non ACE implementation (vmangos#2718)

* Add IO::Networking::DNS::ResolveDomain (vmangos#2722)

* Increase max line length of `sConfig::Reload()`

If for example a full windows path would be provided in one of the variables, it would fail

* Rename `sConfig.SetSource()`

* Add `std::expected` backport

* ServiceWin32 use `nullptr` instead of `0`

* Replace `ACE/get_opt` with custom `ArgparseForServer`

* Use std::chrono instead of ACE Time

* Move mangos remote stuff in separate folder

* Logical const-correctness for sConfig

* Add `sConfig.IsSet`

* Add `AsyncSocket::ReadSome`

* Add `AsyncSocket::ReadSome`

* Move `array_deleter` into separate header

* Remove ACE from `RASocket`

* RASocket add support for telnet negotiation

Allow applications like Putty to connect to the server

* Move gSOAP into a diffrent folder

* Update gSOAP `2.7.10` (2008) to `2.8.135` (2024)

* Fix double free in SOAP code

* Add `IO::Networking::IpAddress::FromIpv4Uint32`

* Add SOAP without ACE

* `Warden::GetModuleNames` without ACE

* `IsIPAddress` without ACE

* `Log::WaitBeforeContinueIfNeed` sleep without ACE

* Replace ACE specific numeric types with std:: ones

* Remove unused `DelayExecutor`

* Don't print ACE version on startup

* Remove ACE include from `mangosd/Master.cpp`

* Remove ACE include from `realmd/AuthSocket.cpp`

* Remove `LockedQueue` from `Common.h`

* Always show warnings. Disable locally if needed.

* Remove code for Solaris in `Common.h`

* Remove ACE from `sprintf` formatting macros

* Remove `countof` macro

* Remove networking includes stuff from `Common.h`

* Remove ACE from `Common.h`

* Fix `world-daemon` logging name

Bug introduced in a566778

* Fix missing includes

* Add `#undef main` to realmd and mangosd

* Fix linux build

* AsyncSocket non generic and offload to cpp file

* NativeIO: Set atomic state before `::WSASend/Recv`

* Native: Remove even more ACE includes

* Fix usage of `MANGOS_ASSERT` (add `;` at end)

* Add `jeremy-rifkin/cpptrace` to repo tree

* Remove Replaced `backward.hpp` with `cpptrace`

And also moved the stack trace handling to a cpp file, since its not performance critical

* Add `IO::Utils::GetCurrentProcessId()`

* Remove ACE headers for global Windows.h import 😭

I really tried a lot to avoid a global Windows header include.
I was able remove all of the references but not for G3D, they have it deeply embedded in their headers.
For example a simple `Vector.h` depends on `Windows.h` (like WTF).

* Remove last references of ACE in code and CMake

* Native: Fix Linux build after ACE removal

* Fix macOS build

* Fix Linux build of mmap/MapBuilder.cpp

* Fix missing argument in a `sLog.Out()` call

* Move `array_deleter` to `MaNGOS::Memory` namespace

* Create `MaNGOS::Memory::no_deleter`

Discover new and exciting ways how to leak memory by using this struct.

* Move realmd packets to file `AuthPackets.h`

* Use `XFER_DATA_CHUNK*` instead of `uint8*`

* Add `IO::Filesystem::FileHandle::Seek`

* Readd `CMD_XFER_RESUME`

* Remove `typedef` of `struct`s in AuthPackets

* Use real `XFER_INIT` packet

* Add `gulrak/filesystem`

* Replace some IO::Filesystem with std::filesystem

* Add `MaNGOS::Policies::NoCopyNoMove`

* Fix shutdown crash when with `ThreadSpecificPtr`

* Fix RaspberryPi build

* Native IO: Changed internal `ipv4` representation

* Rename `nostd::expected` to `nonstd::expected`

* Refactor `IO::Networking::AsyncServer`

* `IO::ReadableBuffer` to replace all buffers types

* `ReadableBuffer` rename `ByteBuffer` member

* Fix missing `;`

* Enforce `;` at end of `MANGOS_DEBUG_ASSERT`

* Fix Linux build after AsyncSocketAcceptor refactor

* Fix windows build

* Rename file to `ReadableBuffer.h`

* Fix typo `GetLeastUsedIoContext`

* Add comment to `IO::ReadableBuffer`

* Add connect feature for sockets

* Fix mac build

* Update cpptrace to fix Visual Studio 2015 bug

* Fix realmd build.

* Native IO Documentation

* Revert "Native Branch: Replace parts of `IO::Filesystem` with C++17 `std::filesystem`" (vmangos#2757)

* Fix WinXP bug. lol

* Fix more potential errors on windows

* Use `inet_pton` instead of `inet_addr`

* Change `cmake_minimum_required` of `cpptrace`

* Add dependencies to `3rd Party` cmake folder group

* Add comment how to use `EnumFlag`

* Remove `FileOpenFlags`

Backport commit from reverted fs change vmangos#2746

* Add comment to `Errors.h`

* log stacktrace to `sLog` instead of `std::cout`

* Remove ACE stuff from github buildaction

* Update `cpptrace` to fix 32bit bug

* AsyncSocketAcceptor only log on real error

* "Lowered" log level of mostly uninteresting logs

* Reason for `IO::ReadableBuffer`

* Fix cmake error.

* Fix RaspberryPI build

OS: Ubuntu 24.10 Server

---------

Co-authored-by: ratkosrb <[email protected]>
Co-authored-by: ratkosrb <[email protected]>
Co-authored-by: Nolin <[email protected]>
0blu added a commit to 0blu/vmangos-core that referenced this pull request Sep 26, 2024
commit 2106888
Author: 0blu <[email protected]>
Date:   Thu Sep 26 02:25:03 2024 +0200

    `PrintStacktrace` show error if no debug symbols

commit fdcae22
Merge: 2f79467 72090ec
Author: 0blu <[email protected]>
Date:   Thu Sep 26 02:20:20 2024 +0200

    Merge branch 'development' of https://github.com/vmangos/core into HEAD

commit 2f79467
Merge: ce22bf7 60a3ca7
Author: ratkosrb <[email protected]>
Date:   Wed Sep 25 02:33:41 2024 +0200

    Merge pull request vmangos#2777 from 0blu/native-realmd-no-init-ip

    Native Branch: Fix missing IP at realmd

commit 60a3ca7
Author: 0blu <[email protected]>
Date:   Tue Sep 24 00:12:18 2024 +0200

    Print human readable error on ::bind() error

commit e1f8888
Author: 0blu <[email protected]>
Date:   Tue Sep 24 00:11:11 2024 +0200

    Fix crash if unable to bind port

commit 612e8aa
Author: 0blu <[email protected]>
Date:   Tue Sep 24 00:10:29 2024 +0200

    Add `IO::Networking::DNS::SelectionStrategy`

commit a443e7e
Author: 0blu <[email protected]>
Date:   Mon Sep 23 23:46:28 2024 +0200

    Remove deprecated `std::unexpected`

commit 0096b51
Author: 0blu <[email protected]>
Date:   Mon Sep 23 23:09:22 2024 +0200

    Fix uninitialized IP string in `AuthHandler`

commit ce22bf7
Author: Nolin <[email protected]>
Date:   Mon Sep 23 22:00:58 2024 +0200

    Fix Apple Silicon Build

commit 8eb16b5
Merge: a14d299 54c7538
Author: ratkosrb <[email protected]>
Date:   Mon Sep 23 02:04:07 2024 +0200

    Merge pull request vmangos#2774 from 0blu/realmlist-dns

    Native Branch: DNS resolve realmlist addresses

commit 54c7538
Author: 0blu <[email protected]>
Date:   Mon Sep 23 01:11:15 2024 +0200

    RealmList DNS resolve

commit c1c4927
Author: 0blu <[email protected]>
Date:   Mon Sep 23 01:04:39 2024 +0200

    Resolve IP addresses without touching DNS layer

commit 89a399f
Author: 0blu <[email protected]>
Date:   Mon Sep 23 00:54:15 2024 +0200

    Improve `SystemErrorToString`

commit a14d299
Merge: 5465f01 37b832c
Author: ratkosrb <[email protected]>
Date:   Wed Sep 18 09:26:55 2024 +0200

    Merge pull request vmangos#2771 from 0blu/native-proxy-protocol-real-ip

    Native Branch: Add built-in support for proxy-v2 to get the real IP of a player

commit 37b832c
Author: 0blu <[email protected]>
Date:   Wed Sep 18 00:57:35 2024 +0200

    Fix unix build

commit a02eb3f
Author: 0blu <[email protected]>
Date:   Tue Sep 17 23:16:38 2024 +0200

    Realmd add `TrustedProxyServers`

commit b1662cc
Author: 0blu <[email protected]>
Date:   Tue Sep 17 22:22:50 2024 +0200

    Mangosd add `TrustedProxyServers`

commit 3788d87
Author: 0blu <[email protected]>
Date:   Tue Sep 17 22:11:07 2024 +0200

    WorldSocket header optimization.

commit a251e5f
Author: 0blu <[email protected]>
Date:   Tue Sep 17 21:49:42 2024 +0200

    Fixup ProxyV2Reader

commit 12a5bd5
Author: 0blu <[email protected]>
Date:   Tue Sep 17 21:49:24 2024 +0200

    Fixup SplitStringByDelimiter

commit b08a220
Author: 0blu <[email protected]>
Date:   Tue Sep 17 10:08:55 2024 +0200

    Fixup InitializeAndFixateMemoryLocation

commit 13d344f
Author: 0blu <[email protected]>
Date:   Tue Sep 17 10:08:38 2024 +0200

    IP Address `toString` -> `ToString`

commit 32b70e3
Author: 0blu <[email protected]>
Date:   Tue Sep 17 10:07:04 2024 +0200

    Fixup, Error ToString

commit 31e636f
Author: 0blu <[email protected]>
Date:   Tue Sep 17 10:06:24 2024 +0200

    IP comment

commit 2c3bccc
Author: 0blu <[email protected]>
Date:   Tue Sep 17 01:40:34 2024 +0200

    Rename `InitializeAndFixateMemoryLocation`

commit 1f193fd
Author: 0blu <[email protected]>
Date:   Tue Sep 17 01:39:13 2024 +0200

    Add `TrustedProxyServers` to config

commit b127da2
Author: 0blu <[email protected]>
Date:   Tue Sep 17 01:38:36 2024 +0200

    Fixup default WaitAtStartupError 2

commit 788af92
Author: 0blu <[email protected]>
Date:   Tue Sep 17 01:37:56 2024 +0200

    Fixup default `WaitAtStartupError `

commit f75dad8
Author: 0blu <[email protected]>
Date:   Tue Sep 17 01:37:27 2024 +0200

    Changed default `WaitAtStartupError`

commit 30f268a
Author: 0blu <[email protected]>
Date:   Tue Sep 17 01:35:58 2024 +0200

    Proxy comment

commit 783cbb8
Author: 0blu <[email protected]>
Date:   Tue Sep 17 01:35:28 2024 +0200

    Add `SplitStringByDelimiter` util

commit 0b4ef09
Author: 0blu <[email protected]>
Date:   Mon Sep 16 23:48:02 2024 +0200

    Fix protocol parser

commit 954a7b9
Author: 0blu <[email protected]>
Date:   Mon Sep 16 23:47:48 2024 +0200

    Add `UndefinedErrorType` to `GetErrorBaseString`

commit cd4e0bc
Author: 0blu <[email protected]>
Date:   Mon Sep 16 23:43:57 2024 +0200

    Fix indent

commit 05d617f
Author: 0blu <[email protected]>
Date:   Fri Sep 13 23:57:08 2024 +0200

    Testing native ip

commit 5465f01
Author: 0blu <[email protected]>
Date:   Wed Sep 18 00:24:16 2024 +0200

    Hide `cpptrace` cmake variables

commit b38dd07
Author: 0blu <[email protected]>
Date:   Wed Sep 18 00:23:35 2024 +0200

    Update `cpptrace` dependency to version `0.7.1`

commit c75ba67
Merge: f114e9d 5973bad
Author: ratkosrb <[email protected]>
Date:   Tue Sep 17 06:41:28 2024 +0200

    Merge pull request vmangos#2770 from 0blu/ip-subnet-check-fix

    Native Branch: IsInSameSubnet fix

commit 5973bad
Author: 0blu <[email protected]>
Date:   Mon Sep 16 22:25:59 2024 +0200

    Dont crash on missing migrations

commit e6c4c39
Author: 0blu <[email protected]>
Date:   Mon Sep 16 22:25:23 2024 +0200

    IoContext, yield once on error

commit cb060ad
Author: 0blu <[email protected]>
Date:   Mon Sep 16 22:23:53 2024 +0200

    IPAddress: rename `getType` to `GetType`

commit 0330866
Author: 0blu <[email protected]>
Date:   Mon Sep 16 22:22:56 2024 +0200

    Nolint non initialized internal union

commit 81f134e
Author: 0blu <[email protected]>
Date:   Mon Sep 16 22:07:30 2024 +0200

    Add comment

commit 96cdcc4
Author: 0blu <[email protected]>
Date:   Mon Sep 16 22:07:19 2024 +0200

    Fix incorrect `Networking::IsInSameSubnet` check

commit f114e9d
Merge: 0f40bf9 ff592ab
Author: ratkosrb <[email protected]>
Date:   Mon Sep 16 19:08:30 2024 +0200

    Merge pull request vmangos#2768 from 0blu/cpptrace-fix

    Native Branch: `cpptrace` fix

commit ff592ab
Author: 0blu <[email protected]>
Date:   Sun Sep 15 23:51:52 2024 +0200

    cpp trace version change

commit 0f40bf9
Author: schell244 <[email protected]>
Date:   Sun Sep 15 07:19:14 2024 +0200

    RaspberryPi Fixes (vmangos#2765)

commit 607116e
Author: schell244 <[email protected]>
Date:   Sat Sep 14 22:48:52 2024 +0200

    Remove unnecessary include. (vmangos#2764)

commit 907c08d
Author: Nolin <[email protected]>
Date:   Sat Sep 14 18:42:07 2024 +0200

    Fix RaspberryPI build

    OS: Ubuntu 24.10 Server

commit ab4cc77
Merge: 8a9a39a ff028e8
Author: ratkosrb <[email protected]>
Date:   Sat Sep 14 18:11:05 2024 +0200

    Merge pull request vmangos#2763 from vmangos/development

    Update native branch

commit 8a9a39a
Author: ratkosrb <[email protected]>
Date:   Sat Sep 14 17:39:38 2024 +0300

    Fix cmake error.

commit 6c9e0a6
Merge: 1d18a61 0bf3237
Author: ratkosrb <[email protected]>
Date:   Sat Sep 14 03:02:26 2024 +0200

    Merge pull request vmangos#2761 from 0blu/native-some-changes-1

    Native Branch: Minor changes

commit 0bf3237
Author: 0blu <[email protected]>
Date:   Fri Sep 13 19:46:57 2024 +0200

    Reason for `IO::ReadableBuffer`

commit 3b18cdf
Author: 0blu <[email protected]>
Date:   Fri Sep 13 19:24:29 2024 +0200

    "Lowered" log level of mostly uninteresting logs

commit 9b277c9
Author: 0blu <[email protected]>
Date:   Fri Sep 13 19:15:14 2024 +0200

    AsyncSocketAcceptor only log on real error

commit 5025e3d
Author: 0blu <[email protected]>
Date:   Fri Sep 13 18:47:26 2024 +0200

    Update `cpptrace` to fix 32bit bug

commit 242a9e9
Author: 0blu <[email protected]>
Date:   Mon Sep 9 21:39:59 2024 +0200

    Remove ACE stuff from github buildaction

commit 9fa88c6
Author: 0blu <[email protected]>
Date:   Mon Sep 9 21:38:23 2024 +0200

    log stacktrace to `sLog` instead of `std::cout`

commit 29aacce
Author: 0blu <[email protected]>
Date:   Mon Sep 9 21:35:55 2024 +0200

    Add comment to `Errors.h`

commit 2e30f60
Author: 0blu <[email protected]>
Date:   Sun Sep 8 01:11:48 2024 +0200

    Remove `FileOpenFlags`

    Backport commit from reverted fs change vmangos#2746

commit 60ddc5c
Author: 0blu <[email protected]>
Date:   Sun Sep 8 00:52:51 2024 +0200

    Add comment how to use `EnumFlag`

commit eb2d287
Author: 0blu <[email protected]>
Date:   Sat Sep 7 23:20:48 2024 +0200

    Add dependencies to `3rd Party` cmake folder group

commit 4a7960a
Author: 0blu <[email protected]>
Date:   Sat Sep 7 23:20:05 2024 +0200

    Change `cmake_minimum_required` of `cpptrace`

commit fee4a3b
Author: 0blu <[email protected]>
Date:   Sat Sep 7 03:19:21 2024 +0200

    Use `inet_pton` instead of `inet_addr`

commit fe12603
Author: 0blu <[email protected]>
Date:   Sat Sep 7 03:09:05 2024 +0200

    Fix more potential errors on windows

commit e68c966
Author: 0blu <[email protected]>
Date:   Sat Sep 7 03:02:01 2024 +0200

    Fix WinXP bug. lol

commit 1d18a61
Author: ratkosrb <[email protected]>
Date:   Sun Sep 8 00:27:04 2024 +0200

    Revert "Native Branch: Replace parts of `IO::Filesystem` with C++17 `std::filesystem`" (vmangos#2757)

commit d9f17f6
Merge: 1eaa04f 5904339
Author: ratkosrb <[email protected]>
Date:   Sat Sep 7 19:45:01 2024 +0200

    Merge pull request vmangos#2746 from 0blu/native-some-std-filesystem

    Native Branch: Replace parts of `IO::Filesystem` with C++17 `std::filesystem`

commit 1eaa04f
Merge: af63ec8 6ea706a
Author: ratkosrb <[email protected]>
Date:   Sat Sep 7 07:48:20 2024 +0200

    Merge pull request vmangos#2754 from 0blu/native-documentation

    Native Branch: Documentation

commit 6ea706a
Author: 0blu <[email protected]>
Date:   Sat Sep 7 02:01:31 2024 +0200

    Native IO Documentation

commit af63ec8
Author: ratkosrb <[email protected]>
Date:   Fri Sep 6 07:20:42 2024 +0300

    Fix realmd build.

commit a7897d1
Merge: 2ef457f 6bc3c49
Author: ratkosrb <[email protected]>
Date:   Fri Sep 6 01:17:31 2024 +0200

    Merge pull request vmangos#2752 from 0blu/native-socket-connector

    Native Branch: Socket Connector

commit 2ef457f
Merge: 7e50e26 6161309
Author: ratkosrb <[email protected]>
Date:   Fri Sep 6 01:15:57 2024 +0200

    Merge pull request vmangos#2753 from 0blu/native-fix-cpptrace-vs14

    Update cpptrace to fix Visual Studio 2015 compile bug

commit 6161309
Author: 0blu <[email protected]>
Date:   Thu Sep 5 23:34:28 2024 +0200

    Update cpptrace to fix Visual Studio 2015 bug

commit 6bc3c49
Author: _BLU <[email protected]>
Date:   Thu Sep 5 23:19:03 2024 +0200

    Fix mac build

commit b374c06
Author: 0blu <[email protected]>
Date:   Thu Sep 5 22:05:54 2024 +0200

    Add connect feature for sockets

commit 7e50e26
Merge: f2ef52a 53777b5
Author: ratkosrb <[email protected]>
Date:   Thu Sep 5 10:28:48 2024 +0200

    Merge pull request vmangos#2749 from 0blu/native-refactor-net-server

    Native Branch: Refactor AsyncSocketServer

commit 53777b5
Author: 0blu <[email protected]>
Date:   Wed Sep 4 23:51:20 2024 +0200

    Add comment to `IO::ReadableBuffer`

commit 4beb432
Author: 0blu <[email protected]>
Date:   Wed Sep 4 23:42:18 2024 +0200

    Fix typo `GetLeastUsedIoContext`

commit bb0c162
Author: 0blu <[email protected]>
Date:   Wed Sep 4 23:27:07 2024 +0200

    Rename file to `ReadableBuffer.h`

commit 0a0af98
Author: 0blu <[email protected]>
Date:   Wed Sep 4 23:21:36 2024 +0200

    Fix windows build

commit 691ef1b
Author: 0blu <[email protected]>
Date:   Wed Sep 4 23:06:51 2024 +0200

    Fix Linux build after AsyncSocketAcceptor refactor

commit fee4aa5
Author: 0blu <[email protected]>
Date:   Wed Sep 4 23:00:55 2024 +0200

    Enforce `;` at end of `MANGOS_DEBUG_ASSERT`

commit 5f53005
Author: 0blu <[email protected]>
Date:   Wed Sep 4 23:00:38 2024 +0200

    Fix missing `;`

commit d37da10
Author: 0blu <[email protected]>
Date:   Wed Sep 4 22:57:39 2024 +0200

    `ReadableBuffer` rename `ByteBuffer` member

commit bc19080
Author: 0blu <[email protected]>
Date:   Tue Sep 3 01:23:44 2024 +0200

    `IO::ReadableBuffer` to replace all buffers types

commit e32e50a
Author: 0blu <[email protected]>
Date:   Mon Sep 2 02:51:56 2024 +0200

    Refactor `IO::Networking::AsyncServer`

commit 5809c11
Author: 0blu <[email protected]>
Date:   Sun Sep 1 01:18:38 2024 +0200

    Rename `nostd::expected` to `nonstd::expected`

commit d8adf2f
Author: 0blu <[email protected]>
Date:   Sun Sep 1 01:05:42 2024 +0200

    Native IO: Changed internal `ipv4` representation

commit 03f7c47
Author: 0blu <[email protected]>
Date:   Sun Sep 1 01:03:15 2024 +0200

    Fix RaspberryPi build

commit f2ef52a
Merge: 5f0106a b60a24a
Author: ratkosrb <[email protected]>
Date:   Sat Aug 31 22:46:17 2024 +0200

    Merge pull request vmangos#2748 from 0blu/native-fix-tss

    Native Branch: Fix crash on related to `ThreadSpecificPtr<T>`

commit b60a24a
Author: 0blu <[email protected]>
Date:   Sat Aug 31 21:04:07 2024 +0200

    Fix shutdown crash when with `ThreadSpecificPtr`

commit 4f2a255
Author: 0blu <[email protected]>
Date:   Sat Aug 31 21:02:07 2024 +0200

    Add `MaNGOS::Policies::NoCopyNoMove`

commit 5904339
Author: 0blu <[email protected]>
Date:   Sat Aug 31 00:31:00 2024 +0200

    Replace some IO::Filesystem with std::filesystem

commit 03a1e98
Author: 0blu <[email protected]>
Date:   Sat Aug 31 00:25:16 2024 +0200

    Add `gulrak/filesystem`

commit 5f0106a
Merge: 21ca640 5ce83ff
Author: ratkosrb <[email protected]>
Date:   Fri Aug 30 23:52:10 2024 +0200

    Merge pull request vmangos#2745 from 0blu/native-xfer-resume

    Native Branch: Readd `CMD_XFER_RESUME`

commit 5ce83ff
Author: 0blu <[email protected]>
Date:   Fri Aug 30 23:32:00 2024 +0200

    Use real `XFER_INIT` packet

commit fe2e36e
Author: 0blu <[email protected]>
Date:   Fri Aug 30 23:31:22 2024 +0200

    Remove `typedef` of `struct`s in AuthPackets

commit 3fb32fa
Author: 0blu <[email protected]>
Date:   Fri Aug 30 22:05:37 2024 +0200

    Readd `CMD_XFER_RESUME`

commit 92af06b
Author: 0blu <[email protected]>
Date:   Fri Aug 30 22:05:20 2024 +0200

    Add `IO::Filesystem::FileHandle::Seek`

commit f3395ce
Author: 0blu <[email protected]>
Date:   Fri Aug 30 19:18:52 2024 +0200

    Use `XFER_DATA_CHUNK*` instead of `uint8*`

commit c992a61
Author: 0blu <[email protected]>
Date:   Fri Aug 30 18:56:13 2024 +0200

    Move realmd packets to file `AuthPackets.h`

commit ac4c98b
Author: 0blu <[email protected]>
Date:   Fri Aug 30 18:52:56 2024 +0200

    Create `MaNGOS::Memory::no_deleter`

    Discover new and exciting ways how to leak memory by using this struct.

commit 2909b75
Author: 0blu <[email protected]>
Date:   Fri Aug 30 18:51:56 2024 +0200

    Move `array_deleter` to `MaNGOS::Memory` namespace

commit 6f787e6
Author: 0blu <[email protected]>
Date:   Fri Aug 30 17:19:47 2024 +0200

    Fix missing argument in a `sLog.Out()` call

commit 21ca640
Merge: a0b378f f8f08c1
Author: ratkosrb <[email protected]>
Date:   Fri Aug 30 03:01:15 2024 +0200

    Merge pull request vmangos#2743 from 0blu/native-remove-ace-finally

    Native Branch: Remove last references of ACE in code and CMake

commit f8f08c1
Author: 0blu <[email protected]>
Date:   Fri Aug 30 01:41:06 2024 +0200

    Fix Linux build of mmap/MapBuilder.cpp

commit 9310ef4
Author: _BLU <[email protected]>
Date:   Fri Aug 30 01:17:47 2024 +0200

    Fix macOS build

commit 692be45
Author: 0blu <[email protected]>
Date:   Fri Aug 30 00:55:03 2024 +0200

    Native: Fix Linux build after ACE removal

commit cc3307a
Author: 0blu <[email protected]>
Date:   Fri Aug 30 00:39:49 2024 +0200

    Remove last references of ACE in code and CMake

commit d4e6a69
Author: 0blu <[email protected]>
Date:   Fri Aug 30 00:23:59 2024 +0200

    Remove ACE headers for global Windows.h import 😭

    I really tried a lot to avoid a global Windows header include.
    I was able remove all of the references but not for G3D, they have it deeply embedded in their headers.
    For example a simple `Vector.h` depends on `Windows.h` (like WTF).

commit 24a37c7
Author: 0blu <[email protected]>
Date:   Thu Aug 29 23:53:08 2024 +0200

    Add `IO::Utils::GetCurrentProcessId()`

commit a0b378f
Merge: f371547 405408f
Author: ratkosrb <[email protected]>
Date:   Fri Aug 30 00:19:49 2024 +0200

    Merge pull request vmangos#2742 from 0blu/native-move-stacktrace-to-cpp-file

    Native move stacktrace to cpp file

commit 405408f
Author: 0blu <[email protected]>
Date:   Thu Aug 29 19:00:52 2024 +0200

    Remove Replaced `backward.hpp` with `cpptrace`

    And also moved the stack trace handling to a cpp file, since its not performance critical

commit 78b9b04
Author: 0blu <[email protected]>
Date:   Thu Aug 29 18:23:27 2024 +0200

    Add `jeremy-rifkin/cpptrace` to repo tree

commit 3d522b2
Author: 0blu <[email protected]>
Date:   Thu Aug 29 18:27:22 2024 +0200

    Fix usage of `MANGOS_ASSERT` (add `;` at end)

commit 2b3bda5
Author: 0blu <[email protected]>
Date:   Wed Aug 28 20:13:31 2024 +0200

    Native: Remove even more ACE includes

commit f371547
Merge: 0680ce0 2f500b9
Author: ratkosrb <[email protected]>
Date:   Wed Aug 28 18:04:53 2024 +0200

    Merge pull request vmangos#2736 from vmangos/development

    Update native branch

commit 0680ce0
Merge: f48d8ab 26226ab
Author: ratkosrb <[email protected]>
Date:   Wed Aug 28 11:42:37 2024 +0200

    Merge pull request vmangos#2734 from 0blu/native-non-generic-asyncsocket2

    Native Branch: Move `IO::Networking::AsyncSocket` to .cpp file

commit f48d8ab
Merge: b7687bb afa1065
Author: ratkosrb <[email protected]>
Date:   Wed Aug 28 11:39:40 2024 +0200

    Merge pull request vmangos#2733 from 0blu/native-remove-ace-header

    Native Branch: Remove most ACE headers

commit b7687bb
Merge: ee78492 1bb32a5
Author: ratkosrb <[email protected]>
Date:   Wed Aug 28 11:38:37 2024 +0200

    Merge pull request vmangos#2732 from 0blu/native-warden-fix

    Native Branch: Warden without ACE

commit ee78492
Merge: 8c3f71f 63dfc7a
Author: ratkosrb <[email protected]>
Date:   Wed Aug 28 11:38:18 2024 +0200

    Merge pull request vmangos#2731 from 0blu/native-mangos-gsoap-without-ace

    Native Branch: MaNGOS gSOAP without ace

commit 26226ab
Author: 0blu <[email protected]>
Date:   Tue Aug 27 20:04:35 2024 +0200

    NativeIO: Set atomic state before `::WSASend/Recv`

commit 50c48e1
Author: 0blu <[email protected]>
Date:   Tue Aug 27 17:02:13 2024 +0200

    AsyncSocket non generic and offload to cpp file

commit afa1065
Author: 0blu <[email protected]>
Date:   Tue Aug 27 17:11:30 2024 +0200

    Fix linux build

commit ab442db
Author: 0blu <[email protected]>
Date:   Tue Aug 27 12:08:46 2024 +0200

    Add `#undef main` to realmd and mangosd

commit 78e3370
Author: 0blu <[email protected]>
Date:   Tue Aug 27 12:06:47 2024 +0200

    Fix missing includes

commit 286f285
Author: 0blu <[email protected]>
Date:   Tue Aug 27 11:58:31 2024 +0200

    Fix `world-daemon` logging name

    Bug introduced in a566778

commit edf34c8
Author: 0blu <[email protected]>
Date:   Tue Aug 27 11:29:12 2024 +0200

    Remove ACE from `Common.h`

commit 8316870
Author: 0blu <[email protected]>
Date:   Tue Aug 27 11:28:14 2024 +0200

    Remove networking includes stuff from `Common.h`

commit 6b1d8a1
Author: 0blu <[email protected]>
Date:   Tue Aug 27 11:26:54 2024 +0200

    Remove `countof` macro

commit 5ec3c4d
Author: 0blu <[email protected]>
Date:   Tue Aug 27 11:26:35 2024 +0200

    Remove ACE from `sprintf` formatting macros

commit 9b71eaa
Author: 0blu <[email protected]>
Date:   Tue Aug 27 11:06:22 2024 +0200

    Remove code for Solaris in `Common.h`

commit 7f89982
Author: 0blu <[email protected]>
Date:   Tue Aug 27 11:03:56 2024 +0200

    Always show warnings. Disable locally if needed.

commit 72e0a2b
Author: 0blu <[email protected]>
Date:   Tue Aug 27 10:31:57 2024 +0200

    Remove `LockedQueue` from `Common.h`

commit e894710
Author: 0blu <[email protected]>
Date:   Tue Aug 27 00:56:22 2024 +0200

    Remove ACE include from `realmd/AuthSocket.cpp`

commit ac58929
Author: 0blu <[email protected]>
Date:   Tue Aug 27 00:55:34 2024 +0200

    Remove ACE include from `mangosd/Master.cpp`

commit 87aca53
Author: 0blu <[email protected]>
Date:   Tue Aug 27 00:54:50 2024 +0200

    Don't print ACE version on startup

commit b17363a
Author: 0blu <[email protected]>
Date:   Mon Aug 26 22:23:59 2024 +0200

    Remove unused `DelayExecutor`

commit 9bf7b77
Author: 0blu <[email protected]>
Date:   Mon Aug 26 22:20:06 2024 +0200

    Replace ACE specific numeric types with std:: ones

commit 13a3e4a
Author: 0blu <[email protected]>
Date:   Mon Aug 26 21:41:08 2024 +0200

    `Log::WaitBeforeContinueIfNeed` sleep without ACE

commit 6b17295
Author: 0blu <[email protected]>
Date:   Mon Aug 26 21:40:44 2024 +0200

    `IsIPAddress` without ACE

commit 1bb32a5
Author: 0blu <[email protected]>
Date:   Mon Aug 26 17:27:46 2024 +0200

    `Warden::GetModuleNames` without ACE

commit 63dfc7a
Author: 0blu <[email protected]>
Date:   Mon Aug 26 17:13:52 2024 +0200

    Add SOAP without ACE

commit 7c571cd
Author: 0blu <[email protected]>
Date:   Mon Aug 26 17:11:14 2024 +0200

    Add `IO::Networking::IpAddress::FromIpv4Uint32`

commit 8c3f71f
Merge: 2d1f188 f5dce5d
Author: ratkosrb <[email protected]>
Date:   Tue Aug 27 23:45:59 2024 +0200

    Merge pull request vmangos#2730 from 0blu/native-mangos-update-gsoap

    Update gsoap

commit f5dce5d
Author: 0blu <[email protected]>
Date:   Mon Aug 26 15:46:13 2024 +0200

    Fix double free in SOAP code

commit 9993ddc
Author: 0blu <[email protected]>
Date:   Mon Aug 26 15:11:19 2024 +0200

    Update gSOAP `2.7.10` (2008) to `2.8.135` (2024)

commit 95f3270
Author: 0blu <[email protected]>
Date:   Mon Aug 26 15:05:54 2024 +0200

    Move gSOAP into a diffrent folder

commit 2d1f188
Merge: 026dd9e 4642008
Author: ratkosrb <[email protected]>
Date:   Tue Aug 27 22:45:15 2024 +0200

    Merge pull request vmangos#2727 from 0blu/native-mangos-ra

    Native Branch: Remote Access Terminal without ACE

commit 4642008
Author: 0blu <[email protected]>
Date:   Sun Aug 25 16:59:17 2024 +0200

    RASocket add support for telnet negotiation

    Allow applications like Putty to connect to the server

commit 3e955e2
Author: 0blu <[email protected]>
Date:   Sun Aug 25 16:38:53 2024 +0200

    Remove ACE from `RASocket`

commit 6dc90a7
Author: 0blu <[email protected]>
Date:   Sun Aug 25 15:02:46 2024 +0200

    Move `array_deleter` into separate header

commit 5c76ab9
Author: 0blu <[email protected]>
Date:   Sun Aug 25 17:34:58 2024 +0200

    Add `AsyncSocket::ReadSome`

commit 1d7e802
Author: 0blu <[email protected]>
Date:   Sat Aug 24 13:59:31 2024 +0200

    Add `AsyncSocket::ReadSome`

commit eb9630d
Author: 0blu <[email protected]>
Date:   Sat Aug 24 13:24:53 2024 +0200

    Add `sConfig.IsSet`

commit b2d7378
Author: 0blu <[email protected]>
Date:   Sat Aug 24 13:22:19 2024 +0200

    Logical const-correctness for sConfig

commit e77012c
Author: 0blu <[email protected]>
Date:   Fri Aug 23 12:14:06 2024 +0200

    Move mangos remote stuff in separate folder

commit 026dd9e
Merge: 095a260 c2882c3
Author: ratkosrb <[email protected]>
Date:   Tue Aug 27 21:13:53 2024 +0200

    Merge pull request vmangos#2724 from 0blu/native-time

    Native Branch: Use std::chrono instead of ACE Time

commit c2882c3
Author: 0blu <[email protected]>
Date:   Fri Aug 23 03:41:04 2024 +0200

    Use std::chrono instead of ACE Time

commit 095a260
Merge: 4dd18c9 a566778
Author: ratkosrb <[email protected]>
Date:   Tue Aug 27 11:56:19 2024 +0200

    Merge pull request vmangos#2723 from 0blu/native-argparse

    Native Branch: Replace ACE/get_opt with custom ArgparseForServer

commit a566778
Author: 0blu <[email protected]>
Date:   Fri Aug 23 02:39:40 2024 +0200

    Replace `ACE/get_opt` with custom `ArgparseForServer`

commit 38b2fb7
Author: 0blu <[email protected]>
Date:   Fri Aug 23 02:39:14 2024 +0200

    ServiceWin32 use `nullptr` instead of `0`

commit 529259e
Author: 0blu <[email protected]>
Date:   Fri Aug 23 02:33:03 2024 +0200

    Add `std::expected` backport

commit 04eea38
Author: 0blu <[email protected]>
Date:   Tue Aug 20 11:04:40 2024 +0200

    Rename `sConfig.SetSource()`

commit ff12710
Author: 0blu <[email protected]>
Date:   Tue Aug 20 11:03:06 2024 +0200

    Increase max line length of `sConfig::Reload()`

    If for example a full windows path would be provided in one of the variables, it would fail

commit 4dd18c9
Author: _BLU <[email protected]>
Date:   Mon Aug 26 02:14:26 2024 +0200

    Add IO::Networking::DNS::ResolveDomain (vmangos#2722)

commit fdce76d
Author: _BLU <[email protected]>
Date:   Sat Aug 24 01:16:18 2024 +0200

    Replace ACE_TSS in Database with non ACE implementation (vmangos#2718)

commit 2949fba
Author: ratkosrb <[email protected]>
Date:   Mon Aug 12 04:29:08 2024 +0300

    More missing includes.

commit ebfc7b8
Author: ratkosrb <[email protected]>
Date:   Mon Aug 12 04:10:38 2024 +0300

    Add missing includes.

commit d335327
Author: ratkosrb <[email protected]>
Date:   Mon Aug 12 04:01:32 2024 +0300

    Fix extractors build.

commit 1632f5c
Author: ratkosrb <[email protected]>
Date:   Sun Aug 11 06:00:51 2024 +0300

    Use backward library for stacktrace.

commit b518e9f
Author: _BLU <[email protected]>
Date:   Sun Aug 11 02:45:36 2024 +0200

    Fix build with Visual Studio 2015 (vmangos#2717)

    * Remove `::inet_ntop` dependency on windows

    We cant use ::inet_ntoa(...) because it's not thread safe.
    We cant use ::inet_ntop(...) because it's not WinXP compatible.
    So we have to do it ourselves.

    * Fix Windows `AsyncSystemTimer` on 32bit

    * Fix `EnumFlags.h` on VS14

    * Add comment to `GetRemoteIpString`

    * Add max size to `m_sendQueue`

commit 2e4421e
Author: _BLU <[email protected]>
Date:   Fri Aug 9 17:56:43 2024 +0200

    Minor changes to native branch (vmangos#2715)

    * NativeIO: Remove unused parts of the code

    * WorldSession do `FinalizeSession()` on socket

    * Rename variable

    * Native IO: Don't get the filePath from a handle

    * Reformat AsyncIoOperation.h

    * Use inet_ntop instead inet_ntoa for thread-safety

    * Fix visibility in AsyncSocket

    * Clear CONTEXT_PRESENT when StopPendingTransactions

commit 3e5aa9c
Author: _BLU <[email protected]>
Date:   Wed Aug 7 18:57:04 2024 +0200

    Native networking for mangosd (vmangos#2707)

    * Native mangosd: Able to "join" the game

    * Add ring buffer for packets. Encryption is done in IO thread

    * Rename all threads

    * Add Reactor style native IO like Boost or ACE

    * Add a WorldSocketMgt just like `TrinityCore`

    * Readd realmd support with new IoContext stuff

    * New IO ctx now compiles under linux (still some runtime bugs)

    * Native: Linux use eventfd for context switch notify

    * Fix windows build

    * Fix usage of `std::shared_ptr<WorldSocket>`

    * Make m_sendQueueIsRunning atomic

    * Fix duplicated line

    * Fix duplicated maiev scan in debug (vmangos#2706)

    * Remove lock free packet send queue for now

    * Fix linux build

    * Initialize some variables at `WorldSession` to make clang-tidy happy

    * NativeIO: Use std::atomic to be lock free

    * Native: Also make windows IO lock free

    * Fix sql field index comment

    * Remove unnecessary includes

    * Update mangosd.conf.dist.in

    * Minor changes to native IO code and comments

    * Fix initial macos bugs

    * Fix some comments

    * Inline MANGOS_ASSERT condition

    * Add JetBrain IDE code style defaults (vmangos#2709)

    * Native IO: Fix macOS build

    * Reformat `mangos/Master.cpp` and `realmd/Main.cpp`

    * Fix incorrect client ip realmd -> mangosd check

    * Re-add `HandlePing` support for older clients

    * Reformat `WorldSocket.cpp`

    * Native: World/ioCtx shutdown fix

    * AsyncSystemTimer: Fix potential notify loss

commit d9254f4
Merge: cbd8523 60a555f
Author: ratkosrb <[email protected]>
Date:   Mon Jul 1 09:26:27 2024 +0300

    Merge pull request vmangos#2697 from vmangos/development

    update native branch

commit cbd8523
Author: _BLU <[email protected]>
Date:   Sun Jun 30 21:29:03 2024 +0200

    NativeIO: Add Linux support (vmangos#2696)

    * Create NativeAliases.h

    * IO::Networking moved some files around

    * `IocpOperationTask` as member of `AsyncSocket` to avoid `new` memory allocation

    * Native IO: Able to compile empty impl on linux

    * Fix windows build

    * Native IO: Linux add fs support

    * Native IO: Linux, able to connect

    * Fix uninitialized `m_sessionDurationTimeout`

    * Fix SO_REUSEADDR on linux

    * Sortof impl of unix epoll AsyncSocket

    * Add own implementation of `AsyncSystemTimer`

    * Code Style

    * Native IO: Add all other Write handlers

    * NativeIO: Linux add EPOLLRDHUP for disconnect requests

    * Fix windows build

    * NativeIO: Windows Code Style

    * Fix EnumFlags

    * Update comment

commit c4dd43f
Author: ratkosrb <[email protected]>
Date:   Tue Jun 25 05:08:45 2024 +0300

    Code style fixes.

commit 22146a7
Author: ratkosrb <[email protected]>
Date:   Tue Jun 25 04:54:54 2024 +0300

    Fix AuthSocket build.

commit b175ca5
Author: ratkosrb <[email protected]>
Date:   Tue Jun 25 04:43:36 2024 +0300

    Fix build error in EnumFlag.

commit 1bbe6a8
Author: ratkosrb <[email protected]>
Date:   Tue Jun 25 04:02:03 2024 +0300

    Remove semicolon after include.

commit 76be16f
Author: _BLU <[email protected]>
Date:   Tue Jun 25 02:54:20 2024 +0200

    Add CMD_XFER_ACCEPT support (vmangos#2691)

    * Make m_ServiceStatus volatile

    * Add type size to eAuthCmd  and AuthResult

    * NativeIO: Realmd: First impl of `LogonChallenge` just like cMangos

    Currently only windows support. Using legacy `::select` function. Must use IOCTL in the future.

    * Add "Network" to log type string

    * Make m_ServiceStatus volatile (again)

    * SRP6 add const to parameter

    * Database add DbExecMode to force sync statements (prevent race condition)

    * Reimplement most AuthSocket handers async (like cMangos)

    * Use high performance winsock2 async sockets

    The implementation is inspired by Boost::ASIO and Nginx

    * Async networking: Split declaration and definition inside header

    * Async networking: Move implementation into own folder

    * Fix ATTR_PRINTF on PExecute with DbExecMode

    * Add function IO::Multithreading::CreateThread with nameable threads

    * Add IO::Timer::AsyncSystemTimer

    * Change RunEventLoop error handling

    * Remove Timer was already removed error log

    * Add comment explaining why we cant use `SetThreadDescription`

    * Remove `MaNGOS::` prefix from `IO::` namespace

    * Add TrinityCore's EnumFlag implementation

    Reference: https://github.com/TrinityCore/TrinityCore/blob/a0e5f9db7e3fdf70ec70533e64e5653f04eeac16/src/common/Utilities/EnumFlag.h

    * Fix windows #include

    * Please split `socket->Write(...)` calls

    * Async socket add Write for `uint8[]`

    * Update AsyncServerListener.h

    * Update AuthCodes.h

    * Add namespace `IO::Filesystem`

    * ByteBuffer add `append(std::vector<uint8> const& src)`

    * Realmd: Remove old PatchHandler

    * Add new `ClientPatchCache`

    * Realmd: Add support for `CMD_XFER_ACCEPT`

    * Remove ACE_TYPES from `XFER_DATA_CHUNK`

    * Add `IO::Networking::` `IpAddress` and `IpEndpoint` structures

    * Add `IO::Networking::IsInSameSubnet`

    * Add function `AsyncSocket<T>::GetRemoteEndpoint()` and `GetRemoteIpString()`

    * Make ReamList use new `IO::Networking::IpAddress`

    * Fix `IO::Filesystem::GetAllFilesInFolder` comment

commit a403bec
Author: ratkosrb <[email protected]>
Date:   Sun Jun 23 20:15:08 2024 +0300

    Include stirng header in CreateThread.h

commit 03257ea
Author: _BLU <[email protected]>
Date:   Sun Jun 23 18:36:42 2024 +0200

    Add MaxSessionDuration to realmd (vmangos#2687)

    * Make m_ServiceStatus volatile

    * Add type size to eAuthCmd  and AuthResult

    * NativeIO: Realmd: First impl of `LogonChallenge` just like cMangos

    Currently only windows support. Using legacy `::select` function. Must use IOCTL in the future.

    * Add "Network" to log type string

    * Make m_ServiceStatus volatile (again)

    * SRP6 add const to parameter

    * Database add DbExecMode to force sync statements (prevent race condition)

    * Reimplement most AuthSocket handers async (like cMangos)

    * Use high performance winsock2 async sockets

    The implementation is inspired by Boost::ASIO and Nginx

    * Async networking: Split declaration and definition inside header

    * Async networking: Move implementation into own folder

    * Fix ATTR_PRINTF on PExecute with DbExecMode

    * Add function IO::Multithreading::CreateThread with nameable threads

    * Add IO::Timer::AsyncSystemTimer

    * Change RunEventLoop error handling

    * Remove Timer was already removed error log

    * Add comment explaining why we cant use `SetThreadDescription`

    * Remove `MaNGOS::` prefix from `IO::` namespace

commit ea60861
Author: ratkosrb <[email protected]>
Date:   Sun Jun 23 03:14:45 2024 +0300

    No need to endian convert build twice.

commit cd634e9
Author: ratkosrb <[email protected]>
Date:   Sun Jun 23 03:11:13 2024 +0300

    Fix reconnecting to realmd.

commit 54fa00e
Author: ratkosrb <[email protected]>
Date:   Sun Jun 23 02:46:11 2024 +0300

    Fix crash on login.

commit 29dc202
Author: ratkosrb <[email protected]>
Date:   Sun Jun 23 02:40:21 2024 +0300

    Remove commented out stuff.

commit 2846aeb
Author: ratkosrb <[email protected]>
Date:   Sun Jun 23 02:38:41 2024 +0300

    Fix realmd build.

commit 5fb737a
Author: _BLU <[email protected]>
Date:   Sun Jun 23 01:32:34 2024 +0200

    Use modern networking sockets for low CPU usage and high performant code (vmangos#2680)

    * Make m_ServiceStatus volatile

    * Add type size to eAuthCmd  and AuthResult

    * NativeIO: Realmd: First impl of `LogonChallenge` just like cMangos

    Currently only windows support. Using legacy `::select` function. Must use IOCTL in the future.

    * Add "Network" to log type string

    * Make m_ServiceStatus volatile (again)

    * SRP6 add const to parameter

    * Database add DbExecMode to force sync statements (prevent race condition)

    * Reimplement most AuthSocket handers async (like cMangos)

    * Use high performance winsock2 async sockets

    The implementation is inspired by Boost::ASIO and Nginx

    * Async networking: Split declaration and definition inside header

    * Async networking: Move implementation into own folder

commit 9ab623f
Merge: 55ffaec a1cd3ab
Author: ratkosrb <[email protected]>
Date:   Sat Jun 22 23:39:02 2024 +0300

    Merge pull request vmangos#2683 from vmangos/development

    Update native branch

commit 55ffaec
Author: ratkosrb <[email protected]>
Date:   Sat Jun 22 22:03:58 2024 +0300

    Make IsLineEndChar static.

commit c426fd7
Author: ratkosrb <[email protected]>
Date:   Sat Jun 22 21:50:01 2024 +0300

    Reimplement config loading without using ACE.

commit 764c98b
Author: ratkosrb <[email protected]>
Date:   Sun Jun 16 19:15:02 2024 +0300

    Realmd: Native windows implementation of BufferedSocket.
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