game_server.services
简介
service实体形式实现的service管理器
组件接口
ServiceEntity.gs
service实体对象的基础类
一般情况下,使用 pkg.game_server.services 创建新的service实体对象时,需要component此对象
服务开启, override bool ServiceEntity.on_start()
服务关闭, override void ServiceEntity.on_stop()
服务心跳, override void ServiceEntity.on_heartbeat()
函数原型 | 函数作用 |
---|---|
void set_service_name(string service_name) | 设置服务名称 |
services.gs
以service实体的形式实现的service管理器 service实体的特性和普通实体的特性是一致的 service实体的基础组件是ServiceEntity,自定义扩展时需要包含该组件
函数原型 | 函数作用 |
---|---|
bool setup(map para = nil) | 初始化 |
object load_or_create_service(string name, mixed class_id_or_alias, map dbase = ) | 加载或创建service对象 |
object get_service(string service_name) | 根据service名称获取service对象 |
object get_service_by_rid(string rid) | 根据rid获取service对象 |
void iterate_service(function func) | 遍历所有service对象 |
object find_service(function func) | 查找第一个符合条件的service对象 |
bool start_service(string name) | 启动指定名称的service对象服务 |
void stop_service(string name) | 停止指定名称的service对象服务 |
void stop_all_services() | 停止所有service对象服务 |
object get_or_create_service(string name, mixed class_id_or_alias, map dbase = , bool new_create = true, bool from_db = false) | 获取或创建service对象 |
void add_service(string name, object service_ob) | 添加service对象 |
void remove_service(string name) | 移除service对象 |
void dump() | 调试接口,输出service实体列表 |
样例
import pkg.game_server.services;
import engine.preimport;
public void test()
{
//注册几个service的entity配置
EntityFactory.append_dynamic_entity_type("service", {
"type": "service",
"prefix" : "SER",
"class_id" : [ 200, 299 ],
"title":"服务",
"db_collection": "entity",
"entity_dbase": { "is_global": true }
});
EntityFactory.append_dynamic_entity_info("service", {
"class_id": 200,
"alias": "global",
"name":"全局服务",
"ob_file": __DIR__ "GlobalService.gs",
"desc":"全局服务,管理各种全局数据",
}, true);
string service_name = "test0";
services.load_or_create_service(service_name, 200);
services.start_service(service_name);
string service_name2 = "test2";
services.load_or_create_service(service_name2, "global");
services.start_service(service_name2);
}