X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fsocketengine.h;h=a191ff12d7c00fd6db2b317037feab1b157c5ac7;hb=05b111d6a245725c81a314794fb95e8375fb6720;hp=6f5d4131ba06e8c814b08bde67e70ea32a0209a7;hpb=e4acbc95b8b6cd5b28d38a2242c02e8ff4991e4a;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/socketengine.h b/include/socketengine.h index 6f5d4131b..a191ff12d 100644 --- a/include/socketengine.h +++ b/include/socketengine.h @@ -2,8 +2,8 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -38,6 +38,7 @@ enum EventType }; class InspIRCd; +class Module; /** This class is a basic I/O handler class. * Any object which wishes to receive basic I/O events @@ -68,7 +69,28 @@ class CoreExport EventHandler : public Extensible * other forms of IPC. */ int fd; + + /** Pointer to the module which has hooked the given EventHandler for IO events. + */ + Module *IOHook; public: + + /** Return the current hooker of IO events for this socket, or NULL. + * @return Hooker module, if set, or NULL. + */ + Module *GetIOHook(); + + /** Set a module as hooking IO events on this socket. + * @param IOHooker The module hooking IO + * @return True if the hook could be added, false otherwise. + */ + bool AddIOHook(Module *IOHooker); + + /** Remove IO hooking from a module + * @return True if hooking was successfully removed, false otherwise. + */ + bool DelIOHook(); + /** Get the current file descriptor * @return The file descriptor of this handler */ @@ -84,7 +106,7 @@ class CoreExport EventHandler : public Extensible /** Constructor */ - EventHandler() {} + EventHandler(); /** Destructor */ @@ -152,7 +174,7 @@ class CoreExport EventHandler : public Extensible * have to be aware of which SocketEngine derived * class they are using. */ -class CoreExport SocketEngine : public Extensible +class CoreExport SocketEngine { protected: /** Owner/Creator @@ -166,9 +188,22 @@ protected: int CurrentSetSize; /** Reference table, contains all current handlers */ - EventHandler* ref[MAX_DESCRIPTORS]; + EventHandler** ref; + + int MAX_DESCRIPTORS; + + size_t indata; + size_t outdata; + time_t lastempty; + + void UpdateStats(size_t len_in, size_t len_out); public: + double TotalEvents; + double ReadEvents; + double WriteEvents; + double ErrorEvents; + /** Constructor. * The constructor transparently initializes * the socket engine which the ircd is using. @@ -388,6 +423,10 @@ public: * the shell or operating system on fatal error. */ virtual void RecoverFromFork(); + + /** Get data transfer statistics, kilobits per second in and out and total. + */ + void GetStats(float &kbitpersec_in, float &kbitpersec_out, float &kbitpersec_total); }; #endif