#pragma once #include "Socket.h" #ifdef POSIX #include #include #endif namespace Socket { class List { protected: #ifdef WIN32 HANDLE obj_list; mutable std::vector poll_events; #elif POSIX int obj_list; mutable std::vector epoll_events; #else #error "Undefine platform" #endif public: List() noexcept; List(List &&obj) noexcept; ~List() noexcept; bool create(const size_t startListSize = 1); void destroy() noexcept; bool is_created() const noexcept; bool addSocket(const Socket &sock) noexcept; bool removeSocket(const Socket &sock) noexcept; bool accept(std::vector &sockets) const noexcept; bool accept(std::vector &sockets, std::vector &socketsAddress) const noexcept; bool recv(std::vector &sockets, std::vector &errors, std::chrono::milliseconds timeout = std::chrono::milliseconds(~0) ) const noexcept; }; };