]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/socketengine.h
Merge pull request #237 from SaberUK/insp20-fix-windows-build
[user/henk/code/inspircd.git] / include / socketengine.h
index e0512b3aa13fc0c814676610f3dfae75163ec195..7e089da6b8e44b77455c4290352758c51d01198c 100644 (file)
@@ -1,23 +1,33 @@
-/*       +------------------------------------+
- *       | 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) 2005-2007 Craig Edwards <craigedwards@brainbox.cc>
+ *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
  *
- * 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 __SOCKETENGINE__
-#define __SOCKETENGINE__
+
+#ifndef SOCKETENGINE_H
+#define SOCKETENGINE_H
 
 #include <vector>
 #include <string>
 #include <map>
 #include "inspircd_config.h"
+#include "socket.h"
 #include "base.h"
 
 /** Types of event an EventHandler may receive.
@@ -133,9 +143,6 @@ enum EventMask
        FD_TRIAL_NOTE_MASK = 0x5000
 };
 
-class InspIRCd;
-class Module;
-
 /** This class is a basic I/O handler class.
  * Any object which wishes to receive basic I/O events
  * from the socketengine must derive from this class and
@@ -154,7 +161,7 @@ class Module;
  * must have a file descriptor. What this file descriptor
  * is actually attached to is completely up to you.
  */
-class CoreExport EventHandler : public Extensible
+class CoreExport EventHandler : public classbase
 {
  private:
        /** Private state maintained by socket engine */
@@ -245,10 +252,10 @@ class CoreExport SocketEngine
        void SetEventMask(EventHandler* eh, int value);
 public:
 
-       double TotalEvents;
-       double ReadEvents;
-       double WriteEvents;
-       double ErrorEvents;
+       unsigned long TotalEvents;
+       unsigned long ReadEvents;
+       unsigned long WriteEvents;
+       unsigned long ErrorEvents;
 
        /** Constructor.
         * The constructor transparently initializes
@@ -304,18 +311,9 @@ public:
         * and false if it failed. This does not free the
         * EventHandler pointer using delete, if this is
         * required you must do this yourself.
-        * Note on forcing deletes. DO NOT DO THIS! This is
-        * extremely dangerous and will most likely render the
-        * socketengine dead. This was added only for handling
-        * very rare cases where broken 3rd party libs destroys
-        * the OS socket beyond our control. If you can't explain
-        * in minute details why forcing is absolutely necessary
-        * then you don't need it. That was a NO!
         * @param eh The event handler object to remove
-        * @param force *DANGEROUS* See method description!
-        * @return True if the event handler was removed
         */
-       virtual bool DelFd(EventHandler* eh, bool force = false) = 0;
+       virtual void DelFd(EventHandler* eh) = 0;
 
        /** Returns true if a file descriptor exists in
         * the socket engine's list.
@@ -442,7 +440,7 @@ public:
         * This function should emulate its namesake system call exactly.
         * @return This method should return exactly the same values as the system call it emulates.
         */
-       int Bind(int fd, const sockaddr *my_addr, socklen_t addrlen);
+       int Bind(int fd, const irc::sockets::sockaddrs& addr);
 
        /** Abstraction for BSD sockets listen(2).
         * This function should emulate its namesake system call exactly.