]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/socketengine.h
Rename the spanningtree module header to server.
[user/henk/code/inspircd.git] / include / socketengine.h
index c0026bfc6f2513335b0af7ba3853a12d017cff6b..0187a043ed7168adb7cc3b06b4dcdbb4e969b6d6 100644 (file)
@@ -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
 {
@@ -244,16 +234,24 @@ class CoreExport SocketEngine
                 */
                Statistics() : lastempty(0), TotalEvents(0), ReadEvents(0), WriteEvents(0), ErrorEvents(0) { }
 
-               /** Increase the counters for bytes sent/received in this second.
-                * @param len_in Bytes received, 0 if updating number of bytes written.
-                * @param len_out Bytes sent, 0 if updating number of bytes read.
+               /** Update counters for network data received.
+                * This should be called after every read-type syscall.
+                * @param len_in Number of bytes received, or -1 for error, as typically
+                * returned by a read-style syscall.
                 */
-               void Update(size_t len_in, size_t len_out);
+               void UpdateReadCounters(int len_in);
+
+               /** Update counters for network data sent.
+                * This should be called after every write-type syscall.
+                * @param len_out Number of bytes sent, or -1 for error, as typically
+                * returned by a read-style syscall.
+                */
+               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;
 
@@ -268,20 +266,26 @@ class CoreExport SocketEngine
         **/
        static std::vector<EventHandler*> 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<int> 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.
@@ -346,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