]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/socketengine_select.h
Fixes for tokenization oddness with metadata, and weird behaviour of std::istringstre...
[user/henk/code/inspircd.git] / include / socketengine_select.h
index 37a6fc1b61cc5d1de41342f3fe30cd0f55fab885..2126e8ec56053e8c33a21be7a2d7e56de5e7a6c6 100644 (file)
@@ -2,17 +2,14 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
- *                       E-mail:
- *                <brain@chatspike.net>
- *                <Craig@chatspike.net>
+ *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
  *
- * Written by Craig Edwards, Craig McLure, and others.
  * This program is free but copyrighted software; see
  *            the file COPYING for details.
  *
  * ---------------------------------------------------
-*/
+ */
 
 #ifndef __SOCKETENGINE_SELECT__
 #define __SOCKETENGINE_SELECT__
@@ -36,9 +33,12 @@ private:
        /** Because select() does not track an fd list for us between calls, we have one of our own
         */
        std::map<int,int> fds;
+       /** List of writeable ones (WantWrite())
+        */
+       bool writeable[MAX_DESCRIPTORS];
        /** The read set and write set, populated before each call to select().
         */
-       fd_set wfdset, rfdset;
+       fd_set wfdset, rfdset, errfdset;
 public:
        /** Create a new SelectEngine
         * @param Instance The creator of this object
@@ -50,9 +50,10 @@ public:
        virtual bool AddFd(EventHandler* eh);
        virtual int GetMaxFds();
        virtual int GetRemainingFds();
-       virtual bool DelFd(EventHandler* eh);
+       virtual bool DelFd(EventHandler* eh, bool force = false);
        virtual int DispatchEvents();
        virtual std::string GetName();
+       virtual void WantWrite(EventHandler* eh);
 };
 
 /** Creates a SocketEngine
@@ -62,7 +63,7 @@ class SocketEngineFactory
 public:
        /** Create a new instance of SocketEngine based on SelectEngine
         */
-       SocketEngine* Create(InspIRCd* Instance) { return new SelectEngine(InspIRCd* Instance); }
+       SocketEngine* Create(InspIRCd* Instance) { return new SelectEngine(Instance); }
 };
 
 #endif