X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Finspsocket.h;h=66ea48eb3532e9a40e3fe30d7a9c247084689432;hb=7b08be5752bb91d495f324f97b346976d669ad90;hp=13dacc90bb229b3714d79ff73c06fef75c38287e;hpb=9183ebd28c79b12ddf29b3847f59679e480af70a;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/inspsocket.h b/include/inspsocket.h index 13dacc90b..66ea48eb3 100644 --- a/include/inspsocket.h +++ b/include/inspsocket.h @@ -2,8 +2,8 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -56,11 +56,6 @@ enum BufferedSocketError class BufferedSocket; class InspIRCd; -using irc::sockets::insp_sockaddr; -using irc::sockets::insp_inaddr; -using irc::sockets::insp_ntoa; -using irc::sockets::insp_aton; - /** Used to time out socket connections */ class CoreExport SocketTimeout : public Timer @@ -69,12 +64,15 @@ class CoreExport SocketTimeout : public Timer /** BufferedSocket the class is attached to */ BufferedSocket* sock; + /** Server instance creating the timeout class */ InspIRCd* ServerInstance; + /** File descriptor of class this is attached to */ int sfd; + public: /** Create a socket timeout class * @param fd File descriptor of BufferedSocket @@ -84,6 +82,7 @@ class CoreExport SocketTimeout : public Timer * @param now The current time */ SocketTimeout(int fd, InspIRCd* Instance, BufferedSocket* thesock, long secs_from_now, time_t now) : Timer(secs_from_now, now), sock(thesock), ServerInstance(Instance), sfd(fd) { }; + /** Handle tick event */ virtual void Tick(time_t now); @@ -94,11 +93,9 @@ class CoreExport SocketTimeout : public Timer * can use for TCP socket support. It is fully integrated * into InspIRCds socket loop and attaches its sockets to * the core's instance of the SocketEngine class, meaning - * that any sockets you create have the same power and - * abilities as a socket created by the core itself. - * To use BufferedSocket, you must inherit a class from it, - * and use the BufferedSocket constructors to establish connections - * and bindings. + * that all use is fully asynchronous. + * + * To use BufferedSocket, you must inherit a class from it. */ class CoreExport BufferedSocket : public EventHandler { @@ -110,7 +107,7 @@ class CoreExport BufferedSocket : public EventHandler /** Instance we were created by */ - InspIRCd* Instance; + InspIRCd* ServerInstance; /** Timeout class or NULL */ @@ -159,7 +156,7 @@ class CoreExport BufferedSocket : public EventHandler * more information without application-level queueing * which was required in older software. */ - void SetQueues(int nfd); + void SetQueues(); /** When the socket has been marked as closing, this flag * will be set to true, then the next time the socket is @@ -174,6 +171,10 @@ class CoreExport BufferedSocket : public EventHandler */ bool BindAddr(const std::string &ip); + /** (really) Try bind to a given IP setup. For internal use only. + */ + bool DoBindMagic(const std::string ¤t_ip, bool v6); + /** * The default constructor does nothing * and should not be used. @@ -239,7 +240,7 @@ class CoreExport BufferedSocket : public EventHandler virtual bool OnDataReady(); /** - * When it is ok to write to the socket, and a + * When it is ok to write to the socket, and a * write event was requested, this method is * triggered. * @@ -248,7 +249,7 @@ class CoreExport BufferedSocket : public EventHandler * other end of the socket. * * Further write events will not be triggered - * unless you call WantWrite(). + * unless you call SocketEngine::WantWrite(). * * The default behaviour of this method is to * flush the write buffer, respecting the IO @@ -308,27 +309,14 @@ class CoreExport BufferedSocket : public EventHandler */ void SetState(BufferedSocketState s); - /** - * Call this to receive the next write event - * that comes along for this fd to the OnWriteReady - * method. - */ - void WantWrite(); - /** * Returns the current socket state. */ BufferedSocketState GetState(); - /** - * Only the core should call this function. - * When called, it is assumed the socket is ready - * to read data, and the method call routes the - * event to the various methods of BufferedSocket - * for you to handle. This can also cause the - * socket's state to change. + /** Mark a socket as being connected and call appropriate events. */ - bool Poll(); + bool InternalMarkConnected(); /** * This method causes the socket to close, and may @@ -361,4 +349,3 @@ class CoreExport BufferedSocket : public EventHandler }; #endif -