]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/iohook.h
Remove ProtocolInterface::SendMode()
[user/henk/code/inspircd.git] / include / iohook.h
index 7c3a0faeef975aa064064409cecbe238291926fb..ce7ca2a1be305d347af9e185ad134fbffcfdb596 100644 (file)
@@ -21,7 +21,7 @@
 
 class StreamSocket;
 
-class IOHook : public ServiceProvider
+class IOHookProvider : public ServiceProvider
 {
  public:
        enum Type
@@ -32,19 +32,35 @@ class IOHook : public ServiceProvider
 
        const Type type;
 
-       IOHook(Module* mod, const std::string& Name, Type hooktype = IOH_UNKNOWN)
+       IOHookProvider(Module* mod, const std::string& Name, Type hooktype = IOH_UNKNOWN)
                : ServiceProvider(mod, Name, SERVICE_IOHOOK), type(hooktype) { }
 
-       /** Called immediately after any connection is accepted. This is intended for raw socket
+       /** Called immediately after a connection is accepted. This is intended for raw socket
         * processing (e.g. modules which wrap the tcp connection within another library) and provides
         * no information relating to a user record as the connection has not been assigned yet.
-        * There are no return values from this call as all modules get an opportunity if required to
-        * process the connection.
         * @param sock The socket in question
         * @param client The client IP address and port
         * @param server The server IP address and port
         */
-       virtual void OnStreamSocketAccept(StreamSocket* sock, irc::sockets::sockaddrs* client, irc::sockets::sockaddrs* server) = 0;
+       virtual void OnAccept(StreamSocket* sock, irc::sockets::sockaddrs* client, irc::sockets::sockaddrs* server) = 0;
+
+       /** Called immediately upon connection of an outbound BufferedSocket which has been hooked
+        * by a module.
+        * @param sock The socket in question
+        */
+       virtual void OnConnect(StreamSocket* sock) = 0;
+};
+
+class IOHook : public classbase
+{
+ public:
+       /** The IOHookProvider for this hook, contains information about the hook,
+        * such as the module providing it and the hook type.
+        */
+       IOHookProvider* const prov;
+
+       IOHook(IOHookProvider* provider)
+               : prov(provider) { }
 
        /**
         * Called when a hooked stream has data to write, or when the socket
@@ -62,12 +78,6 @@ class IOHook : public ServiceProvider
         */
        virtual void OnStreamSocketClose(StreamSocket* sock) = 0;
 
-       /** Called immediately upon connection of an outbound BufferedSocket which has been hooked
-        * by a module.
-        * @param sock The socket in question
-        */
-       virtual void OnStreamSocketConnect(StreamSocket* sock) = 0;
-
        /**
         * Called when the stream socket has data to read
         * @param sock The socket that is ready