📄 socketengine_epoll.h
字号:
/****************************************************************************
*
* Multiplatform High-Performance Async Network Library
* Implemented epoll Socket Engine
* Copyright (c) 2007 Burlex
*
* This file may be distributed under the terms of the Q Public License
* as defined by Trolltech ASA of Norway and appearing in the file
* COPYING included in the packaging of this file.
*
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef _NETLIB_SOCKETENGINE_EPOLL_H
#define _NETLIB_SOCKETENGINE_EPOLL_H
#ifdef NETLIB_EPOLL
/** This is the maximum number of connections you will be able to hold at one time.
* adjust it accordingly.
*/
#define MAX_DESCRIPTORS 1024
class epollEngine : public SocketEngine
{
/** Created epoll file descriptor
*/
int epoll_fd;
/** Thread running or not?
*/
bool m_running;
/** Binding for fd -> pointer
*/
BaseSocket * fds[MAX_DESCRIPTORS];
public:
epollEngine();
~epollEngine();
/** Adds a socket to the engine.
*/
void AddSocket(BaseSocket * s);
/** Removes a socket from the engine. It should not receive any more events.
*/
void RemoveSocket(BaseSocket * s);
/** This is called when a socket has data to write for the first time.
*/
void WantWrite(BaseSocket * s);
/** Spawn however many worker threads this engine requires
*/
void SpawnThreads();
/** Called by SocketWorkerThread, this is the network loop.
*/
void MessageLoop();
/** Shutdown the socket engine, disconnect any associated sockets and
* deletes itself and the socket deleter.
*/
void Shutdown();
};
/** Returns the socket engine
*/
inline void CreateSocketEngine() { new epollEngine; }
#endif // NETLIB_EPOLL
#endif // _NETLIB_SOCKETENGINE_EPOLL_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -