Emx::EuvLoop类 参考

实现多路复用循环的主体,所有基于EuvLoop的事件都应绑定到一个EuvLoop上

#include "EuvLoop.hpp"

Public 类型

enum  ModeE { Default , Dynamic }
 初始化模式 更多...
 
using Callback = std::function< void()>
 当循环退出时触发的回调,在此回调中应关闭所有未关闭的绑定到此loop的描述符,否则循环将一直阻塞无法退出 更多...
 

Public 成员函数

 EuvLoop ()
 
ErrCodeE Init (const char *name, Callback onQuit, ModeE mode=Dynamic)
 初始化一个loop 更多...
 
ErrCodeE Start (bool newThread=true)
 开始loop循环,执行此函数之后loop就真正的运行起来了 更多...
 
bool IsRunning ()
 loop当前是否处于运行状态 更多...
 
void Stop ()
 停止loop 更多...
 
void DeInit ()
 去初始化loop,此函数会阻塞至所有描述符关闭并退出loop 更多...
 
void StopAndDeInit ()
 一次性调用Stop和DeInit两个函数,当只有一个loop需要停止时调用此函数,当有多个loop都需要停止时, 可以先调用所有loop的Stop,然后再调用他们的DeInit,这样所有的loop结束的可以快一些 更多...
 
const char * GetName ()
 获取loop名字 更多...
 
uv_loop_t * GetLoop ()
 获取libuv中的loop句柄 更多...
 
void PrintAllHandles ()
 打印绑定到loop中的所有句柄 更多...
 
void PrintActiveHandles ()
 打印绑定到loop中的所有正在监听状态的句柄 更多...
 
bool isQuiting ()
 获取loop是否处于退出状态 当Stop函数被调用后,可能loop无法立刻捕获并执行此事件 如果此时待执行的其他事件较多,可能会引起loop无法及时退出 其他事件的回调可以使用此函数判断当loop处于退出状态时及时退出回调 更多...
 

成员类型定义说明

◆ Callback

using Emx::EuvLoop::Callback = std::function<void()>

成员枚举类型说明

◆ ModeE

枚举值
Default 

默认loop模式,此模式下会使用libuv为每个进程提供的一个静态loop作为EuvLoop,当一个进程只需要一个loop的时候可使用这个模式

Dynamic 

动态loop模式,此模式下会动态的malloc一个loop

构造及析构函数说明

◆ EuvLoop()

Emx::EuvLoop::EuvLoop ( )

成员函数说明

◆ Init()

ErrCodeE Emx::EuvLoop::Init ( const char *  name,
Callback  onQuit,
ModeE  mode = Dynamic 
)
参数
name[in] 为这个loop起个响当当的名字,也就是配置loop所依附的线程名字
onQuit[in] 当执行Stop或者StopAndDeInit时会触发此回调函数, 在此回调中应关闭所有未关闭的绑定到此loop的描述符,否则循环将一直阻塞无法退出
mode[in] 使用loop的方式,默认为动态模式
返回
ErrCodeE

◆ Start()

ErrCodeE Emx::EuvLoop::Start ( bool  newThread = true)
参数
newThread[in] 当此标识为true时会创建一个新的线程来跑loop,此函数不会被阻塞 否则的话就使用当前线程来跑loop,此函数会被阻塞在这里, 当一个进程只需要一个loop的时候可以使用newThread=false的方式
返回
ErrCodeE

◆ IsRunning()

bool Emx::EuvLoop::IsRunning ( )
inline

◆ Stop()

void Emx::EuvLoop::Stop ( )

被这些函数引用 StopAndDeInit().

◆ DeInit()

void Emx::EuvLoop::DeInit ( )

被这些函数引用 StopAndDeInit().

◆ StopAndDeInit()

void Emx::EuvLoop::StopAndDeInit ( )
inline

◆ GetName()

const char* Emx::EuvLoop::GetName ( )
inline
返回
loop名字

◆ GetLoop()

uv_loop_t* Emx::EuvLoop::GetLoop ( )
inline
返回
libuv中的loop句柄

◆ PrintAllHandles()

void Emx::EuvLoop::PrintAllHandles ( )
inline

◆ PrintActiveHandles()

void Emx::EuvLoop::PrintActiveHandles ( )
inline

◆ isQuiting()

bool Emx::EuvLoop::isQuiting ( )
inline
返回
libuv中的loop句柄