]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/inspsocket.h
Remove ProtocolInterface::SendMode()
[user/henk/code/inspircd.git] / include / inspsocket.h
index 8172338ac2d5f0b8647d0f08ca5da70dbb664ac5..1bcfbea096d7c5ec079f3eac221ca1be29c72ca7 100644 (file)
@@ -1,21 +1,32 @@
-/*       +------------------------------------+
- *       | Inspire Internet Relay Chat Daemon |
- *       +------------------------------------+
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
  *
- *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
- * See: http://wiki.inspircd.org/Credits
+ *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
+ *   Copyright (C) 2007-2008 Robin Burchell <robin+git@viroteck.net>
+ *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
+ *   Copyright (C) 2006-2007 Craig Edwards <craigedwards@brainbox.cc>
+ *   Copyright (C) 2006 Oliver Lupton <oliverlupton@gmail.com>
  *
- * This program is free but copyrighted software; see
- *         the file COPYING for details.
+ * This file is part of InspIRCd.  InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
  *
- * ---------------------------------------------------
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __INSP_SOCKET_H__
-#define __INSP_SOCKET_H__
+
+#pragma once
 
 #include "timer.h"
 
+class IOHook;
+
 /**
  * States which a socket may be in
  */
@@ -75,16 +86,15 @@ 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
         */
-       SocketTimeout(int fd, BufferedSocket* thesock, long secs_from_now, time_t now) : Timer(secs_from_now, now), sock(thesock), sfd(fd) { }
+       SocketTimeout(int fd, BufferedSocket* thesock, long secs_from_now) : Timer(secs_from_now), sock(thesock), sfd(fd) { }
 
        /** Handle tick event
         */
-       virtual void Tick(time_t now);
+       virtual bool Tick(time_t now);
 };
 
 /**
@@ -93,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;
@@ -105,10 +116,10 @@ class CoreExport StreamSocket : public EventHandler
  protected:
        std::string recvq;
  public:
-       StreamSocket() : sendq_len(0) {}
-       inline Module* GetIOHook() { return IOHook; }
-       inline void AddIOHook(Module* m) { IOHook = m; }
-       inline void DelIOHook() { IOHook = NULL; }
+       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
         */
@@ -139,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
@@ -185,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);
 
@@ -219,4 +231,6 @@ class CoreExport BufferedSocket : public StreamSocket
        BufferedSocketError BeginConnect(const std::string &ipaddr, int aport, unsigned long maxtime, const std::string &connectbindip);
 };
 
-#endif
+inline IOHook* StreamSocket::GetIOHook() const { return iohook; }
+inline void StreamSocket::AddIOHook(IOHook* hook) { iohook = hook; }
+inline void StreamSocket::DelIOHook() { iohook = NULL; }