X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fsocketengine.h;h=16913972d8d578e9cd881beff1e87346a0e6b5af;hb=a97624bd4b0ea052ca1380f9164769d6a6cab2a3;hp=3acc7bd4fe8dadb605f7e9521197888e5145be84;hpb=ab4dee91de96555db158db91240ff91520318068;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/socketengine.h b/include/socketengine.h index 3acc7bd4f..16913972d 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,8 +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 */ @@ -85,7 +106,7 @@ class CoreExport EventHandler : public Extensible /** Constructor */ - EventHandler() {} + EventHandler(); /** Destructor */ @@ -167,7 +188,15 @@ 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; @@ -394,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