X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fsocket.h;h=427ee9fe7e3f7823aad489f5b253ba81523a9149;hb=2f64744dd81cd956780160e8568a42cf952df6c8;hp=c292b7010b915262d3ad03920f39acdfecf39d81;hpb=99f79a4e5c3abbe91a03216824e7659051872054;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/socket.h b/include/socket.h index c292b7010..427ee9fe7 100644 --- a/include/socket.h +++ b/include/socket.h @@ -127,7 +127,6 @@ namespace irc } } -#include "iohook.h" #include "socketengine.h" /** This class handles incoming connections on client ports. * It will create a new User for every valid connection @@ -142,28 +141,35 @@ class CoreExport ListenSocket : public EventHandler /** Human-readable bind description */ std::string bind_desc; - /** The IOHook provider which handles connections on this socket, - * NULL if there is none. + class IOHookProvRef : public dynamic_reference_nocheck + { + public: + IOHookProvRef() + : dynamic_reference_nocheck(NULL, std::string()) + { + } + }; + + typedef TR1NS::array IOHookProvList; + + /** IOHook providers for handling connections on this socket, + * may be empty. */ - dynamic_reference_nocheck iohookprov; + IOHookProvList iohookprovs; /** Create a new listening socket */ ListenSocket(ConfigTag* tag, const irc::sockets::sockaddrs& bind_to); - /** Handle an I/O event - */ - void HandleEvent(EventType et, int errornum = 0); /** Close the socket */ ~ListenSocket(); - /** Handles sockets internals crap of a connection, convenience wrapper really + /** Handles new connections, called by the socket engine */ - void AcceptInternal(); + void OnEventHandlerRead() CXX11_OVERRIDE; /** Inspects the bind block belonging to this socket to set the name of the IO hook * provider which this socket will use for incoming connections. - * @return True if the IO hook provider was found or none was given, false otherwise. */ - bool ResetIOHookProvider(); + void ResetIOHookProvider(); };