fastdo  0.6.8
eiennet::Server类 参考

基础服务器类 更多...

#include <eiennet_socket.hpp>

类 eiennet::Server 继承关系图:
eiennet::Server 的协作图:

Public 类型

using ClientDataNotifyHandlerFunction = std::function< void(winux::SharedPointer< ClientCtx > clientCtxPtr, size_t readableSize) >
 
using ClientDataArrivedHandlerFunction = std::function< void(winux::SharedPointer< ClientCtx > clientCtxPtr, winux::Buffer data) >
 
using CreateClientHandlerFunction = std::function< ClientCtx *(winux::uint64 clientId, winux::String const &clientEpStr, winux::SharedPointer< ip::tcp::Socket > clientSockPtr) >
 

Public 成员函数

 Server ()
 构造函数0,不会启动服务,必须手动调用startup() 更多...
 
 Server (bool autoReadData, ip::EndPoint const &ep, int threadCount=4, int backlog=0, double serverWait=0.002, double verboseInterval=0.01, bool verbose=true)
 构造函数1,会启动服务 更多...
 
virtual ~Server ()
 
bool startup (bool autoReadData, ip::EndPoint const &ep, int threadCount=4, int backlog=0, double serverWait=0.002, double verboseInterval=0.01, bool verbose=true)
 启动服务器 更多...
 
virtual int run (void *runParam)
 运行 更多...
 
void stop (bool b=true)
 是否停止服务运行 更多...
 
size_t getClientsCount () const
 获取客户连接数 更多...
 
void removeClient (winux::uint64 clientId)
 移除客户连接 更多...
 
void onClientDataNotifyHandler (ClientDataNotifyHandlerFunction handler)
 
void onClientDataArrivedHandler (ClientDataArrivedHandlerFunction handler)
 
void onCreateClientHandler (CreateClientHandlerFunction handler)
 

Protected 成员函数

winux::SharedPointer< ClientCtx > & _addClient (ip::EndPoint const &clientEp, winux::SharedPointer< ip::tcp::Socket > clientSockPtr)
 添加一个客户连接,会触发调用onCreateClient()创建客户场景对象 更多...
 
template<typename _Fx , typename... _ArgType>
void _postTask (winux::SharedPointer< ClientCtx > clientCtxPtr, _Fx fn, _ArgType &&...arg)
 往线程池投递任务 更多...
 
virtual void onClientDataNotify (winux::SharedPointer< ClientCtx > clientCtxPtr, size_t readableSize)
 
virtual void onClientDataArrived (winux::SharedPointer< ClientCtx > clientCtxPtr, winux::Buffer data)
 
virtual ClientCtxonCreateClient (winux::uint64 clientId, winux::String const &clientEpStr, winux::SharedPointer< ip::tcp::Socket > clientSockPtr)
 

Protected 属性

winux::ThreadPool _pool
 线程池 更多...
 
winux::RecursiveMutex _mtxServer
 互斥量保护服务器共享数据 更多...
 
ip::tcp::Socket _servSockA
 服务器监听套接字A 更多...
 
ip::tcp::Socket _servSockB
 服务器监听套接字B 更多...
 
std::map< winux::uint64, winux::SharedPointer< ClientCtx > > _clients
 客户映射表 更多...
 
winux::uint64 _cumulativeClientId
 客户唯一标识 更多...
 
bool _stop
 是否停止 更多...
 
bool _servSockAIsListening
 servSockA是否处于监听中 更多...
 
bool _servSockBIsListening
 servSockB是否处于监听中 更多...
 
bool _isAutoReadData
 是否自动读取客户到达的数据。当为true时,客户数据达到时调用ClientDataArrived事件,否则调用ClientDataNotify事件 更多...
 
double _serverWait
 服务器IO等待时间间隔(秒) 更多...
 
double _verboseInterval
 Verbose信息刷新间隔(秒) 更多...
 
bool _verbose
 显示提示信息 更多...
 
ClientDataNotifyHandlerFunction _ClientDataNotifyHandler
 
ClientDataArrivedHandlerFunction _ClientDataArrivedHandler
 
CreateClientHandlerFunction _CreateClientHandler
 

详细描述

基础服务器类

直接使用时,需要给定事件处理;继承时需要override相应的事件虚函数。
事件:
ClientDataNotify/ClientDataArrived - 客户数据通知/客户数据到达
CreateClient - 创建客户场景时

在文件 eiennet_socket.hpp980 行定义.

成员类型定义说明

在文件 eiennet_socket.hpp1068 行定义.

using eiennet::Server::ClientDataNotifyHandlerFunction = std::function< void ( winux::SharedPointer<ClientCtx> clientCtxPtr, size_t readableSize ) >

在文件 eiennet_socket.hpp1061 行定义.

using eiennet::Server::CreateClientHandlerFunction = std::function< ClientCtx * ( winux::uint64 clientId, winux::String const & clientEpStr, winux::SharedPointer<ip::tcp::Socket> clientSockPtr ) >

在文件 eiennet_socket.hpp1075 行定义.

构造及析构函数说明

eiennet::Server::Server ( )

构造函数0,不会启动服务,必须手动调用startup()

eiennet::Server::Server ( bool  autoReadData,
ip::EndPoint const &  ep,
int  threadCount = 4,
int  backlog = 0,
double  serverWait = 0.002,
double  verboseInterval = 0.01,
bool  verbose = true 
)

构造函数1,会启动服务

参数
autoReadData是否自动读取数据。当为true时,客户数据达到时调用ClientDataArrived事件,否则调用ClientDataNotify事件
ep服务监听的EndPoint
threadCount线程池线程数量
backloglisten(backlog)
serverWait服务器IO等待时间
verboseIntervalverbose信息刷新间隔
verbose是否显示提示信息
virtual eiennet::Server::~Server ( )
virtual

成员函数说明

winux::SharedPointer<ClientCtx>& eiennet::Server::_addClient ( ip::EndPoint const &  clientEp,
winux::SharedPointer< ip::tcp::Socket clientSockPtr 
)
protected

添加一个客户连接,会触发调用onCreateClient()创建客户场景对象

template<typename _Fx , typename... _ArgType>
void eiennet::Server::_postTask ( winux::SharedPointer< ClientCtx clientCtxPtr,
_Fx  fn,
_ArgType &&...  arg 
)
inlineprotected

往线程池投递任务

在文件 eiennet_socket.hpp1027 行定义.

函数调用图:

size_t eiennet::Server::getClientsCount ( ) const

获取客户连接数

virtual void eiennet::Server::onClientDataArrived ( winux::SharedPointer< ClientCtx clientCtxPtr,
winux::Buffer  data 
)
inlineprotectedvirtual

eienwebx::HttpApp 重载.

在文件 eiennet_socket.hpp1068 行定义.

void eiennet::Server::onClientDataArrivedHandler ( ClientDataArrivedHandlerFunction  handler)
inline

在文件 eiennet_socket.hpp1068 行定义.

virtual void eiennet::Server::onClientDataNotify ( winux::SharedPointer< ClientCtx clientCtxPtr,
size_t  readableSize 
)
inlineprotectedvirtual

在文件 eiennet_socket.hpp1061 行定义.

void eiennet::Server::onClientDataNotifyHandler ( ClientDataNotifyHandlerFunction  handler)
inline

在文件 eiennet_socket.hpp1061 行定义.

virtual ClientCtx* eiennet::Server::onCreateClient ( winux::uint64  clientId,
winux::String const &  clientEpStr,
winux::SharedPointer< ip::tcp::Socket clientSockPtr 
)
protectedvirtual

eienwebx::HttpApp 重载.

void eiennet::Server::onCreateClientHandler ( CreateClientHandlerFunction  handler)
inline

在文件 eiennet_socket.hpp1075 行定义.

void eiennet::Server::removeClient ( winux::uint64  clientId)

移除客户连接

virtual int eiennet::Server::run ( void *  runParam)
virtual

运行

eienwebx::HttpApp 重载.

bool eiennet::Server::startup ( bool  autoReadData,
ip::EndPoint const &  ep,
int  threadCount = 4,
int  backlog = 0,
double  serverWait = 0.002,
double  verboseInterval = 0.01,
bool  verbose = true 
)

启动服务器

参数
autoReadData是否自动读取数据。当为true时,客户数据达到时调用ClientDataArrived事件,否则调用ClientDataNotify事件
ep服务监听的EndPoint
threadCount线程池线程数量
backloglisten(backlog)
serverWait服务器IO等待时间
verboseIntervalverbose信息刷新间隔
verbose是否显示提示信息
void eiennet::Server::stop ( bool  b = true)

是否停止服务运行

类成员变量说明

ClientDataArrivedHandlerFunction eiennet::Server::_ClientDataArrivedHandler
protected

在文件 eiennet_socket.hpp1068 行定义.

ClientDataNotifyHandlerFunction eiennet::Server::_ClientDataNotifyHandler
protected

在文件 eiennet_socket.hpp1061 行定义.

std::map< winux::uint64, winux::SharedPointer<ClientCtx> > eiennet::Server::_clients
protected

客户映射表

在文件 eiennet_socket.hpp1043 行定义.

CreateClientHandlerFunction eiennet::Server::_CreateClientHandler
protected

在文件 eiennet_socket.hpp1075 行定义.

winux::uint64 eiennet::Server::_cumulativeClientId
protected

客户唯一标识

在文件 eiennet_socket.hpp1045 行定义.

bool eiennet::Server::_isAutoReadData
protected

是否自动读取客户到达的数据。当为true时,客户数据达到时调用ClientDataArrived事件,否则调用ClientDataNotify事件

在文件 eiennet_socket.hpp1049 行定义.

winux::RecursiveMutex eiennet::Server::_mtxServer
protected

互斥量保护服务器共享数据

在文件 eiennet_socket.hpp1040 行定义.

winux::ThreadPool eiennet::Server::_pool
protected

线程池

在文件 eiennet_socket.hpp1039 行定义.

double eiennet::Server::_serverWait
protected

服务器IO等待时间间隔(秒)

在文件 eiennet_socket.hpp1051 行定义.

ip::tcp::Socket eiennet::Server::_servSockA
protected

服务器监听套接字A

在文件 eiennet_socket.hpp1041 行定义.

bool eiennet::Server::_servSockAIsListening
protected

servSockA是否处于监听中

在文件 eiennet_socket.hpp1047 行定义.

ip::tcp::Socket eiennet::Server::_servSockB
protected

服务器监听套接字B

在文件 eiennet_socket.hpp1042 行定义.

bool eiennet::Server::_servSockBIsListening
protected

servSockB是否处于监听中

在文件 eiennet_socket.hpp1048 行定义.

bool eiennet::Server::_stop
protected

是否停止

在文件 eiennet_socket.hpp1046 行定义.

bool eiennet::Server::_verbose
protected

显示提示信息

在文件 eiennet_socket.hpp1053 行定义.

double eiennet::Server::_verboseInterval
protected

Verbose信息刷新间隔(秒)

在文件 eiennet_socket.hpp1052 行定义.


该类的文档由以下文件生成: