#pragma once ////////////////////////////////////////////////////////////// /// \file /// \brief Definitions for asynchonous connection queue #include "base.h" #include "event_loop.h" #include "netaddr.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef NO_ERROR #undef NO_ERROR #endif #define BUS_WORKER_CONDVAR //#define BUS_WORKER_MIXED namespace NBus { class TBusConnection; class TBusConnectionFactory; class TBusServerFactory; using TBusConnectionList = TList; /// @throw yexception EIpVersion MakeIpVersion(bool allowIpv4, bool allowIpv6); inline bool WouldBlock() { int syserr = LastSystemError(); return syserr == EAGAIN || syserr == EINPROGRESS || syserr == EWOULDBLOCK || syserr == EINTR; } class TBusSession; struct TMaxConnectedException: public yexception { TMaxConnectedException(unsigned maxConnect) { yexception& exc = *this; exc << TStringBuf("Exceeded maximum number of outstanding connections: "); exc << maxConnect; } }; enum EPollType { POLL_READ, POLL_WRITE }; }