]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/inspsocket.h
Introduce ModeProcessFlags, can be passed to ModeParser::Process() to indicate local...
[user/henk/code/inspircd.git] / include / inspsocket.h
index f00d6a96ae744c2463d10f684414b7895d3c6de9..720489b7763dffa5e49d069752c496b5c87d94e4 100644 (file)
  */
 
 
-#ifndef INSPSOCKET_H
-#define INSPSOCKET_H
+#pragma once
 
 #include "timer.h"
 
+class IOHook;
+
 /**
  * States which a socket may be in
  */
@@ -85,7 +86,6 @@ class CoreExport SocketTimeout : public Timer
  public:
        /** Create a socket timeout class
         * @param fd File descriptor of BufferedSocket
-        * @pram Instance server instance to attach to
         * @param thesock BufferedSocket to attach to
         * @param secs_from_now Seconds from now to time out
         * @param now The current time
@@ -94,7 +94,7 @@ class CoreExport SocketTimeout : public Timer
 
        /** Handle tick event
         */
-       virtual void Tick(time_t now);
+       virtual bool Tick(time_t now);
 };
 
 /**
@@ -103,8 +103,9 @@ class CoreExport SocketTimeout : public Timer
  */
 class CoreExport StreamSocket : public EventHandler
 {
-       /** Module that handles raw I/O for this socket, or NULL */
-       reference<Module> IOHook;
+       /** The IOHook that handles raw I/O for this socket, or NULL */
+       IOHook* iohook;
+
        /** Private send queue. Note that individual strings may be shared
         */
        std::deque<std::string> sendq;
@@ -115,10 +116,10 @@ class CoreExport StreamSocket : public EventHandler
  protected:
        std::string recvq;
  public:
-       StreamSocket() : sendq_len(0) {}
-       inline Module* GetIOHook();
-       inline void AddIOHook(Module* m);
-       inline void DelIOHook();
+       StreamSocket() : iohook(NULL), sendq_len(0) {}
+       IOHook* GetIOHook() const;
+       void AddIOHook(IOHook* hook);
+       void DelIOHook();
        /** Handle event from socket engine.
         * This will call OnDataReady if there is *new* data in recvq
         */
@@ -149,7 +150,7 @@ class CoreExport StreamSocket : public EventHandler
         */
        bool GetNextLine(std::string& line, char delim = '\n');
        /** Useful for implementing sendq exceeded */
-       inline const size_t getSendQSize() const { return sendq_len; }
+       inline size_t getSendQSize() const { return sendq_len; }
 
        /**
         * Close the socket, remove from socket engine, etc
@@ -195,9 +196,10 @@ class CoreExport BufferedSocket : public StreamSocket
         * This will create a socket, register with socket engine, and start the asynchronous
         * connection process. If an error is detected at this point (such as out of file descriptors),
         * OnError will be called; otherwise, the state will become CONNECTING.
-        * @param dest Address to connect to
-        * @param bind Address to bind to (if NULL, no bind will be done)
-        * @param timeout Time to wait for connection
+        * @param ipaddr Address to connect to
+        * @param aport Port to connect on
+        * @param maxtime Time to wait for connection
+        * @param connectbindip Address to bind to (if NULL, no bind will be done)
         */
        void DoConnect(const std::string &ipaddr, int aport, unsigned long maxtime, const std::string &connectbindip);
 
@@ -229,9 +231,6 @@ class CoreExport BufferedSocket : public StreamSocket
        BufferedSocketError BeginConnect(const std::string &ipaddr, int aport, unsigned long maxtime, const std::string &connectbindip);
 };
 
-#include "modules.h"
-
-inline Module* StreamSocket::GetIOHook() { return IOHook; }
-inline void StreamSocket::AddIOHook(Module* m) { IOHook = m; }
-inline void StreamSocket::DelIOHook() { IOHook = NULL; }
-#endif
+inline IOHook* StreamSocket::GetIOHook() const { return iohook; }
+inline void StreamSocket::AddIOHook(IOHook* hook) { iohook = hook; }
+inline void StreamSocket::DelIOHook() { iohook = NULL; }