]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/socket.h
DO NOT USE THIS COMMIT - if you do, most of the modules wont work.
[user/henk/code/inspircd.git] / include / socket.h
index 8fd2df0df62832884e8c27ed1935e783773be90e..4e7d8919252b51c84c61a26c78d4382ad14af913 100644 (file)
@@ -2,12 +2,9 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
- *                       E-mail:
- *                <brain@chatspike.net>
- *               <Craig@chatspike.net>
- *     
- * Written by Craig Edwards, Craig McLure, and others.
+ *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
+ *
  * This program is free but copyrighted software; see
  *            the file COPYING for details.
  *
 #include <netinet/in.h>
 #include <unistd.h>
 #include <fcntl.h>
-#include <poll.h>
 #include <netdb.h>
 #include <errno.h>
 #include "inspircd_config.h"
+#include "socketengine.h"
 
 namespace irc
 {
@@ -114,7 +111,12 @@ namespace irc
                 * @param a A human-readable address
                 * @param n An insp_inaddr struct which the result
                 * will be copied into on success.
-                * @return This function will return 0 upon success,
+                * @return This method will return a negative value if address
+                * does not contain a valid address family. 0 if the address is
+                * does not contain a valid string representing a valid network
+                * address. A positive value is returned if the network address
+                * was successfully converted.
+
                 * or any other number upon failure.
                 */
                int insp_aton(const char* a, insp_inaddr* n);
@@ -134,8 +136,43 @@ namespace irc
                 * or a negative value upon failure (negative values are invalid file
                 * descriptors)
                 */
-               int OpenTCPSocket(); 
+               int OpenTCPSocket(char* addr, int socktype = SOCK_STREAM);
        };
 };
 
+/** This class handles incoming connections on client ports.
+ * It will create a new userrec for every valid connection
+ * and assign it a file descriptor.
+ */
+class ListenSocket : public EventHandler
+{
+ protected:
+       /** The creator/owner of this object
+        */
+       InspIRCd* ServerInstance;
+       std::string desc;
+       int family;
+ public:
+       /** Create a new listening socket
+        */
+       ListenSocket(InspIRCd* Instance, int sockfd, irc::sockets::insp_sockaddr client, irc::sockets::insp_sockaddr server, int port, char* addr);
+       /** Handle an I/O event
+        */
+       void HandleEvent(EventType et, int errornum = 0);
+       /** Close the socket
+        */
+       ~ListenSocket();
+       /** Set descriptive text
+        */
+       void SetDescription(const std::string &description)
+       {
+               desc = description;
+       }
+
+       const std::string& GetDescription()
+       {
+               return desc;
+       }
+};
+
 #endif