From 61fed23a3e9a62f19c2f88208585b31356c986ef Mon Sep 17 00:00:00 2001 From: w00t Date: Sun, 7 Sep 2008 18:31:21 +0000 Subject: Start moving IO hooking from being bufferedsocket based to residing in EventHandler, this will pave the way for a generic listener type, and also simplifies a lot of code. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10447 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/configreader.h | 24 ------------------------ include/socket.h | 2 ++ include/socketengine.h | 20 ++++++++++++++++++++ 3 files changed, 22 insertions(+), 24 deletions(-) (limited to 'include') diff --git a/include/configreader.h b/include/configreader.h index 5e437d153..af9c33533 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -607,10 +607,6 @@ class CoreExport ServerConfig : public Extensible */ std::vector ports; - /** socket objects that are attached to by modules - */ - std::map SocketIOHookModule; - /** The 005 tokens of this server (ISUPPORT) * populated/repopulated upon loading or unloading * modules. @@ -823,26 +819,6 @@ class CoreExport ServerConfig : public Extensible void ValidateNoSpaces(const char* p, const std::string &tag, const std::string &val); - /** Get a pointer to the module which has hooked the given BufferedSocket class. - * @parameter port Port number - * @return Returns a pointer to the hooking module, or NULL - */ - Module* GetIOHook(BufferedSocket* is); - - /** Hook a module to an BufferedSocket class, so that it can receive notifications - * of low-level socket activity. - * @param iomod The module to hook to the socket - * @param is The BufferedSocket to attach to - * @return True if the hook was successful. - */ - bool AddIOHook(Module* iomod, BufferedSocket* is); - - /** Delete a module hook from an BufferedSocket. - * @param is The BufferedSocket to detatch from. - * @return True if the unhook was successful - */ - bool DelIOHook(BufferedSocket* is); - /** Returns the fully qualified path to the inspircd directory * @return The full program directory */ diff --git a/include/socket.h b/include/socket.h index a26c1256d..105984f74 100644 --- a/include/socket.h +++ b/include/socket.h @@ -139,6 +139,8 @@ namespace irc } } + + /** This class handles incoming connections on client ports. * It will create a new User for every valid connection * and assign it a file descriptor. diff --git a/include/socketengine.h b/include/socketengine.h index f16ec3fea..127a2fd90 100644 --- a/include/socketengine.h +++ b/include/socketengine.h @@ -68,8 +68,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 */ -- cgit v1.2.3