X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fsocketengine.h;h=c04ae6c70d9383d37822a0a62eef6433b98b69e7;hb=e79930ac02de36ec9b5bd3079955fc21b6f9b603;hp=f647f4df3add6d6c6b440ed64848ff7070054833;hpb=2db77cda56947d4ee0f913c8082f6607855ca713;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/socketengine.h b/include/socketengine.h index f647f4df3..c04ae6c70 100644 --- a/include/socketengine.h +++ b/include/socketengine.h @@ -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 */ @@ -170,6 +191,12 @@ protected: 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; @@ -396,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