summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-09-07 18:31:21 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-09-07 18:31:21 +0000
commit61fed23a3e9a62f19c2f88208585b31356c986ef (patch)
tree1b87a0cade91abc4347785879b8506276732f702 /include
parentf7bfee1e9210b83d0cb544ce14aa52f8637bdf21 (diff)
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
Diffstat (limited to 'include')
-rw-r--r--include/configreader.h24
-rw-r--r--include/socket.h2
-rw-r--r--include/socketengine.h20
3 files changed, 22 insertions, 24 deletions
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<ListenSocket*> ports;
- /** socket objects that are attached to by modules
- */
- std::map<BufferedSocket*, Module*> 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
*/