* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * Inspire is copyright (C) 2002-2005 ChatSpike-Dev.
+ * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
* E-mail:
* <brain@chatspike.net>
* <Craig@chatspike.net>
* settings chosen by the server admin. The current
* version supports select, epoll and kqueue.
*/
-class SocketEngine {
+class SocketEngine : public Extensible
+{
int EngineHandle; /* Handle to the socket engine if needed */
+ int CurrentSetSize; /* Current number of descriptors in the engine */
#ifdef USE_SELECT
std::map<int,int> fds; /* List of file descriptors being monitored */
fd_set wfdset, rfdset; /* Readable and writeable sets for select() */
#endif
#ifdef USE_KQUEUE
- struct kevent ke_list[65535]; /* Up to 64k sockets for kqueue */
+ struct kevent ke_list[MAX_DESCRIPTORS]; /* Up to 64k sockets for kqueue */
struct timespec ts; /* kqueue delay value */
#endif
#ifdef USE_EPOLL
- struct epoll_event events[65535]; /* Up to 64k sockets for epoll */
+ struct epoll_event events[MAX_DESCRIPTORS]; /* Up to 64k sockets for epoll */
#endif
public:
*/
int GetRemainingFds();
- /** Delete a file descriptor f rom the engine
+ /** Delete a file descriptor from the engine
* This function call deletes a file descriptor
* from the engine, returning true if it succeeded
* and false if it failed.
*/
bool DelFd(int fd);
+ /** Returns true if a socket exists in the socket
+ * engine's list.
+ */
+ bool HasFd(int fd);
+
/** Waits for an event.
* Please note that this doesnt wait long, only
* a couple of milliseconds. It returns a list