fastdo  0.6.16
eiennet::Server类 参考

基础服务器类 更多...

#include <eiennet_socket.hpp>

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

Public 类型

using ClientDataNotifyHandlerFunction = std::function< void(winux::SharedPointer< ClientCtx > clientCtxPtr, size_t readableSize) >
 客户数据通知,当Server::_isAutoReadData为false时有效 更多...
 
using ClientDataArrivedHandlerFunction = std::function< void(winux::SharedPointer< ClientCtx > clientCtxPtr, winux::Buffer &data) >
 客户数据到达,当Server::_isAutoReadData为true时有效 更多...
 
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, VerboseOutputType verbose=votConsole)
 构造函数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, VerboseOutputType verbose=votConsole)
 启动服务器 更多...
 
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 成员函数

virtual bool _canAddClient (ClientCtx *clientCtx)
 是否添加一个客户连接。返回true添加,返回false不添加 更多...
 
bool _addClient (ip::EndPoint const &clientEp, winux::SharedPointer< ip::tcp::Socket > clientSockPtr, winux::SharedPointer< ClientCtx > **ppClientCtxPtr)
 添加一个客户连接,会触发调用onCreateClient()创建客户场景对象,会调用_canAddClient()判断是否添加到服务器客户列表 更多...
 
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 属性

ClientDataNotifyHandlerFunction _ClientDataNotifyHandler
 
ClientDataArrivedHandlerFunction _ClientDataArrivedHandler
 
CreateClientHandlerFunction _CreateClientHandler
 
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信息刷新间隔(秒) 更多...
 
VerboseOutputType _verbose
 提示信息输出方式 更多...
 

友元

class ClientCtx
 

详细描述

基础服务器类

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

在文件 eiennet_socket.hpp1083 行定义.

成员类型定义说明

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

客户数据通知,当Server::_isAutoReadData为false时有效

参数
clientCtxPtr客户场景
readableSize可无阻塞读取的数据量

在文件 eiennet_socket.hpp1153 行定义.

using eiennet::Server::ClientDataArrivedHandlerFunction = std::function< void ( winux::SharedPointer<ClientCtx> clientCtxPtr, winux::Buffer & data ) >

客户数据到达,当Server::_isAutoReadData为true时有效

参数
clientCtxPtr客户场景
data数据

在文件 eiennet_socket.hpp1164 行定义.

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

创建客户连接对象

参数
clientId客户唯一标识(64位数字)
clientEpStrip::EndPoint字符串
clientSockPtr客户套接字

在文件 eiennet_socket.hpp1176 行定义.

构造及析构函数说明

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,
VerboseOutputType  verbose = votConsole 
)

构造函数1,会启动服务

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

成员函数说明

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

启动服务器

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

运行

eienwebx::HttpApp , 以及 http::HttpServer 重载.

void eiennet::Server::stop ( bool  b = true)

是否停止服务运行

size_t eiennet::Server::getClientsCount ( ) const

获取客户连接数

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

移除客户连接

virtual bool eiennet::Server::_canAddClient ( ClientCtx clientCtx)
protectedvirtual

是否添加一个客户连接。返回true添加,返回false不添加

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

添加一个客户连接,会触发调用onCreateClient()创建客户场景对象,会调用_canAddClient()判断是否添加到服务器客户列表

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

往线程池投递任务

在文件 eiennet_socket.hpp1132 行定义.

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

在文件 eiennet_socket.hpp1153 行定义.

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

在文件 eiennet_socket.hpp1153 行定义.

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

在文件 eiennet_socket.hpp1164 行定义.

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

http::HttpServer 重载.

在文件 eiennet_socket.hpp1164 行定义.

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

在文件 eiennet_socket.hpp1176 行定义.

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

eienwebx::HttpApp , 以及 http::HttpServer 重载.

友元及相关函数文档

friend class ClientCtx
friend

在文件 eiennet_socket.hpp1195 行定义.

类成员变量说明

ClientDataNotifyHandlerFunction eiennet::Server::_ClientDataNotifyHandler
protected

在文件 eiennet_socket.hpp1153 行定义.

ClientDataArrivedHandlerFunction eiennet::Server::_ClientDataArrivedHandler
protected

在文件 eiennet_socket.hpp1164 行定义.

CreateClientHandlerFunction eiennet::Server::_CreateClientHandler
protected

在文件 eiennet_socket.hpp1176 行定义.

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

线程池

在文件 eiennet_socket.hpp1179 行定义.

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

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

在文件 eiennet_socket.hpp1180 行定义.

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

服务器监听套接字A

在文件 eiennet_socket.hpp1181 行定义.

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

服务器监听套接字B

在文件 eiennet_socket.hpp1182 行定义.

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

客户映射表

在文件 eiennet_socket.hpp1183 行定义.

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

客户唯一标识

在文件 eiennet_socket.hpp1185 行定义.

bool eiennet::Server::_stop
protected

是否停止

在文件 eiennet_socket.hpp1186 行定义.

bool eiennet::Server::_servSockAIsListening
protected

servSockA是否处于监听中

在文件 eiennet_socket.hpp1187 行定义.

bool eiennet::Server::_servSockBIsListening
protected

servSockB是否处于监听中

在文件 eiennet_socket.hpp1188 行定义.

bool eiennet::Server::_isAutoReadData
protected

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

在文件 eiennet_socket.hpp1189 行定义.

double eiennet::Server::_serverWait
protected

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

在文件 eiennet_socket.hpp1191 行定义.

double eiennet::Server::_verboseInterval
protected

Verbose信息刷新间隔(秒)

在文件 eiennet_socket.hpp1192 行定义.

VerboseOutputType eiennet::Server::_verbose
protected

提示信息输出方式

在文件 eiennet_socket.hpp1193 行定义.


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