/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: AuNetSocketServerAcceptReadOperation.NT.hpp Date: 2022-8-22 Author: Reece ***/ #pragma once #include "AuNetSocketServerAcceptReadOperation.hpp" namespace Aurora::IO::Net { struct NetInterface; struct SocketServerAcceptReadOperation : virtual SocketServerAcceptReadOperationBase { SocketServerAcceptReadOperation(NetInterface *pInterface, SocketServer *pParent); bool IsValid(); virtual void OnOverlappedComplete() override; virtual void OnOverlappedFailure(const NetError &error) override; void DoNext(); bool DoTick(); void AU_NOINLINE InitOnce(); bool Pretick(); void UpdateNextSocketAddresses(); protected: LPFN_ACCEPTEX lpfnAcceptEx {}; SOCKET nextSocket {}; AuSPtr nextSocketPtr; NetInterface *pInterface_; AuList addresses_; DWORD addressLengthA_ {}; }; }