/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: INetSrvSockets.hpp Date: 2022-8-15 Author: Reece ***/ #pragma once namespace Aurora::IO::Net { struct ISocketServer; struct NetSocketConnect { NetEndpoint endpoint; AuSPtr pDriver; AuUInt32 uMaxConnectTimeMs {}; }; struct NetSocketConnectMany { ETransportProtocol protocol {}; AuList ips; AuUInt16 uPort {}; AuSPtr pDriver; AuUInt32 uMaxConnectTimeMs {}; }; struct NetSocketBind { ETransportProtocol protocol {}; IPAddress ip; AuUInt16 uPort {}; AuSPtr pFactory; AuSPtr pDriver; AuUInt uMaxConnections {}; AuUInt uMaxAcceptBacklog {}; }; struct NetSocketBindEx : NetSocketBind { AuUInt32 uUDPTimeoutMs {}; }; struct INetSrvSockets { virtual AuSPtr Connect(const NetSocketConnect &netConnect) = 0; virtual AuSPtr ConnectMany(const NetSocketConnectMany &netConnectMany) = 0; virtual AuSPtr NewServer(const NetSocketBind &netBind) = 0; virtual AuSPtr NewServerEx(const NetSocketBindEx &netBindEx) = 0; }; };