Sese Framework  x.y.z
A cross-platform framework
载入中...
搜索中...
未找到
sese::service::v1::TimerableService类 参考

可定时服务 更多...

#include <TimerableService_V1.h>

类 sese::service::v1::TimerableService 继承关系图:
sese::service::TcpTransporter

Public 成员函数

 ~TimerableService () override
 
bool init () override
 
void dispatch (uint32_t timeout) override
 
virtual void onTimeout (TimeoutEvent *timeout_event)
 
TimeoutEventcreateTimeoutEvent (int fd, void *data, uint64_t seconds)
 
void setTimeoutEvent (TimeoutEvent *timeout_event, uint64_t seconds)
 
TimeoutEventgetTimeoutEventByFd (int fd)
 
void cancelTimeoutEvent (TimeoutEvent *timeout_event)
 
void freeTimeoutEvent (TimeoutEvent *timeout_event)
 

Private 属性

uint64_t startTimestamp {0}
 
std::map< int, TimeoutEvent * > timeoutMap
 
std::list< TimeoutEvent * > timeoutTable [60] {}
 

详细描述

可定时服务

构造及析构函数说明

◆ ~TimerableService()

TimerableService::~TimerableService ( )
override

引用了 timeoutMap.

成员函数说明

◆ cancelTimeoutEvent()

void TimerableService::cancelTimeoutEvent ( TimeoutEvent * timeout_event)

取消当前的超时事件

参数
timeout_event超时事件结构

引用了 sese::service::v1::TimeoutEvent::exceptTimestamp, startTimestamp , 以及 timeoutTable.

◆ createTimeoutEvent()

TimeoutEvent * TimerableService::createTimeoutEvent ( int fd,
void * data,
uint64_t seconds )

新建一个超时事件

注解
每一个文件描述符只能对应一个超时事件,

文件描述符重复将会导致原有超时事件被覆盖,

通常文件描述符指的是套接字文件描述符。

需要自定义与套接字无关的超时事件时,

可以将文件描述符设置为小于 -1 的负数,

超时服务不在乎文件描述符的符号。

参数
fd文件描述符
data额外数据
seconds超时时间,单位是秒
返回
超时事件结构

引用了 sese::service::v2::TimeoutEvent::data, startTimestamp, timeoutMap , 以及 timeoutTable.

◆ dispatch()

void TimerableService::dispatch ( uint32_t timeout)
override

◆ freeTimeoutEvent()

void TimerableService::freeTimeoutEvent ( TimeoutEvent * timeout_event)

释放当前的超时事件结构

参数
timeout_event超时事件结构

引用了 sese::service::v1::TimeoutEvent::exceptTimestamp, sese::service::v1::TimeoutEvent::fd, startTimestamp, timeoutMap , 以及 timeoutTable.

◆ getTimeoutEventByFd()

TimeoutEvent * TimerableService::getTimeoutEventByFd ( int fd)

通过文件描述符获取超时事件结构

参数
fd文件描述符
返回值
nullptr对应的超时事件不存在
返回
对应的超时事件结构

引用了 timeoutMap.

◆ init()

bool TimerableService::init ( )
override

引用了 startTimestamp.

◆ onTimeout()

void TimerableService::onTimeout ( TimeoutEvent * timeout_event)
virtual

当超时事件发生时触发

参数
timeout_event

sese::service::TcpTransporter 重载.

被这些函数引用 dispatch().

◆ setTimeoutEvent()

void TimerableService::setTimeoutEvent ( TimeoutEvent * timeout_event,
uint64_t seconds )

重设当前的超时事件,原本的事件将被取消并覆盖

参见
createTimoutEvent
参数
timeout_event超时事件结构
seconds超时时间,单位是秒

引用了 sese::service::v1::TimeoutEvent::exceptTimestamp, startTimestamp , 以及 timeoutTable.

类成员变量说明

◆ startTimestamp

uint64_t sese::service::v1::TimerableService::startTimestamp {0}
private

◆ timeoutMap

std::map<int, TimeoutEvent *> sese::service::v1::TimerableService::timeoutMap
private

◆ timeoutTable

std::list<TimeoutEvent *> sese::service::v1::TimerableService::timeoutTable[60] {}
private

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