/***
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: INetInterface.hpp
Date: 2022-8-15
Author: Reece
***/
#pragma once
namespace Aurora::IO::Net
{
struct INetSrvDatagram;
struct INetSrvResolve;
struct INetSrvSockets;
struct INetSrvWorkers;
struct INetSrvInterfaces;
struct INetInterface
virtual void Shutdown() = 0;
virtual void Destroy() = 0;
virtual bool TrySchedule(const AuSPtr<IIOProcessorWorkUnit> &pWorkUnit) = 0;
virtual AuSPtr<INetSrvWorkers> GetWorkersService() = 0;
virtual AuSPtr<INetSrvResolve> GetResolveService() = 0;
virtual AuSPtr<INetSrvSockets> GetSocketService() = 0;
virtual AuSPtr<INetSrvDatagram> GetDatagramService() = 0;
virtual AuSPtr<INetSrvInterfaces> GetInterfacesService() = 0;
};
AUKN_SYM AuSPtr<INetInterface> NewNetworkInterface();
}