X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fsocketengine.h;h=0187a043ed7168adb7cc3b06b4dcdbb4e969b6d6;hb=4aa27e75af8da0a5bc2e35f931f0165339f5f289;hp=b006439520eb514a26ac833d0108ff72ed2c9d0f;hpb=8e8b0719bf58e2d875c06698f86377189da87e16;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/socketengine.h b/include/socketengine.h index b00643952..0187a043e 100644 --- a/include/socketengine.h +++ b/include/socketengine.h @@ -211,17 +211,7 @@ class CoreExport EventHandler : public classbase * its private members and internal behaviour * should be treated as blackboxed, and vary * from system to system and upon the config - * settings chosen by the server admin. The current - * version supports select, epoll and kqueue. - * The configure script will enable a socket engine - * based upon what OS is detected, and will derive - * a class from SocketEngine based upon what it finds. - * The derived classes file will also implement a - * classfactory, SocketEngineFactory, which will - * create a derived instance of SocketEngine using - * polymorphism so that the core and modules do not - * have to be aware of which SocketEngine derived - * class they are using. + * settings chosen by the server admin. */ class CoreExport SocketEngine { @@ -259,9 +249,9 @@ class CoreExport SocketEngine void UpdateWriteCounters(int len_out); /** Get data transfer statistics. - * @param kbitspersec_in Filled with incoming traffic in this second in kbit/s. - * @param kbitspersec_out Filled with outgoing traffic in this second in kbit/s. - * @param kbitspersec_total Filled with total traffic in this second in kbit/s. + * @param kbitpersec_in Filled with incoming traffic in this second in kbit/s. + * @param kbitpersec_out Filled with outgoing traffic in this second in kbit/s. + * @param kbitpersec_total Filled with total traffic in this second in kbit/s. */ void CoreExport GetBandwidth(float& kbitpersec_in, float& kbitpersec_out, float& kbitpersec_total) const; @@ -276,20 +266,26 @@ class CoreExport SocketEngine **/ static std::vector ref; - protected: - /** Current number of descriptors in the engine - */ + /** Current number of descriptors in the engine. */ static size_t CurrentSetSize; + + /** The maximum number of descriptors in the engine. */ + static size_t MaxSetSize; + /** List of handlers that want a trial read/write */ static std::set trials; - static int MAX_DESCRIPTORS; - /** Socket engine statistics: count of various events, bandwidth usage */ static Statistics stats; + /** Look up the fd limit using rlimit. */ + static void LookupMaxFds(); + + /** Terminates the program when the socket engine fails to initialize. */ + static void InitError(); + static void OnSetEvent(EventHandler* eh, int old_mask, int new_mask); /** Add an event handler to the base socket engine. AddFd(EventHandler*, int) should call this. @@ -354,10 +350,10 @@ public: /** Returns the number of file descriptors reported by the system this program may use * when it was started. - * @return If positive, the number of file descriptors that the system reported that we - * may use. Otherwise (<= 0) this number could not be determined. + * @return If non-zero the number of file descriptors that the system reported that we + * may use. */ - static int GetMaxFds() { return MAX_DESCRIPTORS; } + static size_t GetMaxFds() { return MaxSetSize; } /** Returns the number of file descriptors being queried * @return The set size