]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/inspsocket.h
Merge pull request #1018 from SaberUK/insp20+hidekills
[user/henk/code/inspircd.git] / include / inspsocket.h
index 73aa748a0326384f50627166614d2e9c61eb4407..c62c5a25099375193622b4331963256ef2e819ea 100644 (file)
@@ -1,18 +1,28 @@
-/*       +------------------------------------+
- *       | 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__
+
+#ifndef INSPSOCKET_H
+#define INSPSOCKET_H
 
 #include "timer.h"
 
@@ -75,7 +85,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 +103,7 @@ class CoreExport SocketTimeout : public Timer
 class CoreExport StreamSocket : public EventHandler
 {
        /** Module that handles raw I/O for this socket, or NULL */
-       Module *IOHook;
+       reference<Module> IOHook;
        /** Private send queue. Note that individual strings may be shared
         */
        std::deque<std::string> sendq;
@@ -105,10 +114,10 @@ class CoreExport StreamSocket : public EventHandler
  protected:
        std::string recvq;
  public:
-       StreamSocket() : IOHook(NULL), sendq_len(0) {}
-       inline Module* GetIOHook() { return IOHook; }
-       inline void AddIOHook(Module* m) { IOHook = m; }
-       inline void DelIOHook() { IOHook = NULL; }
+       StreamSocket() : sendq_len(0) {}
+       inline Module* GetIOHook();
+       inline void AddIOHook(Module* m);
+       inline void DelIOHook();
        /** Handle event from socket engine.
         * This will call OnDataReady if there is *new* data in recvq
         */
@@ -139,14 +148,14 @@ 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
         */
        virtual void Close();
        /** This ensures that close is called prior to destructor */
-       virtual void cull();
+       virtual CullResult cull();
 };
 /**
  * BufferedSocket is an extendable socket class which modules
@@ -185,9 +194,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 +229,9 @@ 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