/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: AuNetInterface.hpp Date: 2022-8-16 Author: Reece ***/ #pragma once #include "AuNetSrvWorkers.hpp" #include "AuNetSrvSockets.hpp" #include "AuNetSrvResolve.hpp" #include "AuNetSrvDatagram.hpp" namespace Aurora::IO::Net { struct NetInterface : INetInterface, AuEnableSharedFromThis { NetInterface(); AuSPtr GetWorkersService() override; AuSPtr GetResolveService() override; AuSPtr GetSocketService() override; AuSPtr GetDatagramService() override; bool TrySchedule(const AuSPtr &pWorkUnit) override; AuSPtr TryScheduleEx(); void Shutdown() override; void Destroy() override; private: NetSrvWorkers netServiceWorkers_; // Soviet Union Anthem NetSrvSockets netServiceSockets_; NetSrvResolve netServiceResolve_; NetSrvDatagram netServiceDatagram_; AuUInt atomicCounter_; }; }