跳到主要内容

heartbeat

简介

提供一个高性能的心跳模块,处理定时

组件接口

beat.gs

处理心跳的对象的基础组件

所有能够处理心跳的对象必须提供名称为'do_heartbeat'接口方法

函数原型函数作用
void start_beat(object heart, float interval)开启心跳处理
void stop_beat()停止心跳处理
object get_heart()获取心跳对象
bool is_beating()是不是已经开启心跳处理
void change_interval(float interval)修改心跳处理间隔
void force_trigger_heartbeat()强制执行一次心跳处理
void delay_invoke(float delay_time, function func)延迟一定时长执行一个函数

heart.gs

心跳对象

函数原型函数作用
void dump(bool detail)调试接口 - 输出本对象的心跳信息
void dump_slot()调试接口 - 输出所有槽位信息
void start(map config = )启动心跳
void stop()停止心跳
bool is_domain_heart()是不是允许处理心跳的对象和心跳对象在不同的域
void set_frame_interval(int interval_ms)设置心跳处理时的帧间隔
int get_last_update_ms()获取最近一帧的更新时间
void delay_invoke(float t, function func)延迟一定时长执行一个函数
void register_beat(object beat_ob, int interval_ms)注册一个处理心跳的对象
void unregister_beat(object beat_ob)移除一个处理心跳的对象
void update_beat_interval(object beat_ob, int interval_ms)更新处理心跳的对象的心跳间隔
void force_trigger_heartbeat(object beat_ob)强制处理心跳的对象执行一次心跳处理
void register_frame_update(function callback)注册帧处理函数(每帧都会调用)
void unregister_frame_update(function callback)移除帧处理函数

heartbeat.gs

函数原型函数作用
void dump(bool detail = false)调试接口 - 输出所有心跳信息
object create_heart(domain d, map config = )创建一个心跳对象
void destruct_heart(object h)销毁心跳对象

样例

// test.gs
// 创建心跳对象
domain d = this_domain();
object h = heartbeat.create_heart(d, {
"domain_heart" : true
});
defer {
heartbeat.destruct_heart(h);
}

// 创建处理心跳的对象
object ob = new_object(beater, domain.create());
defer {
ob.close();
}

// 启动心跳处理
ob=>start_beat(h, 1f);

// 等待3秒
coroutine.sleep(3);

// 停止心跳处理
ob=>stop_beat();