X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=include%2Fsocketengine_epoll.h;h=736a109eb177bdacf5541aedffdcecb929210b34;hb=8683e1c80d9d37ee7ffae54c0d888195a5e8d1a7;hp=ddb738fb93f3ecda583e6b3406b134930386f7fa;hpb=bab14f0dd2345c9d7dcbc47c918563709e1ac094;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/socketengine_epoll.h b/include/socketengine_epoll.h index ddb738fb9..736a109eb 100644 --- a/include/socketengine_epoll.h +++ b/include/socketengine_epoll.h @@ -1 +1,64 @@ -/* +------------------------------------+ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * * 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. * * --------------------------------------------------- */ #ifndef __SOCKETENGINE_EPOLL__ #define __SOCKETENGINE_EPOLL__ #include #include #include #include "inspircd_config.h" #include "globals.h" #include "inspircd.h" #include "socketengine.h" #include #define EP_DELAY 5 class InspIRCd; /** A specialisation of the SocketEngine class, designed to use linux 2.6 epoll(). */ class EPollEngine : public SocketEngine { private: /** These are used by epoll() to hold socket events */ struct epoll_event events[MAX_DESCRIPTORS]; public: /** Create a new EPollEngine * @param Instance The creator of this object */ EPollEngine(InspIRCd* Instance); /** Delete an EPollEngine */ virtual ~EPollEngine(); virtual bool AddFd(EventHandler* eh); virtual int GetMaxFds(); virtual int GetRemainingFds(); virtual bool DelFd(EventHandler* eh, bool force = false); virtual int DispatchEvents(); virtual std::string GetName(); virtual void WantWrite(EventHandler* eh); }; /** Creates a SocketEngine */ class SocketEngineFactory { public: /** Create a new instance of SocketEngine based on EpollEngine */ SocketEngine* Create(InspIRCd* Instance) { return new EPollEngine(Instance); } }; #endif \ No newline at end of file +/* +------------------------------------+ + * | Inspire Internet Relay Chat Daemon | + * +------------------------------------+ + * + * 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. + * + * --------------------------------------------------- + */ + +#ifndef __SOCKETENGINE_EPOLL__ +#define __SOCKETENGINE_EPOLL__ + +#include +#include +#include +#include "inspircd_config.h" +#include "globals.h" +#include "inspircd.h" +#include "socketengine.h" +#include +#define EP_DELAY 5 + +class InspIRCd; + +/** A specialisation of the SocketEngine class, designed to use linux 2.6 epoll(). + */ +class EPollEngine : public SocketEngine +{ +private: + /** These are used by epoll() to hold socket events + */ + struct epoll_event events[MAX_DESCRIPTORS]; +public: + /** Create a new EPollEngine + * @param Instance The creator of this object + */ + EPollEngine(InspIRCd* Instance); + /** Delete an EPollEngine + */ + virtual ~EPollEngine(); + virtual bool AddFd(EventHandler* eh); + virtual int GetMaxFds(); + virtual int GetRemainingFds(); + virtual bool DelFd(EventHandler* eh, bool force = false); + virtual int DispatchEvents(); + virtual std::string GetName(); + virtual void WantWrite(EventHandler* eh); +}; + +/** Creates a SocketEngine + */ +class SocketEngineFactory +{ +public: + /** Create a new instance of SocketEngine based on EpollEngine + */ + SocketEngine* Create(InspIRCd* Instance) { return new EPollEngine(Instance); } +}; + +#endif