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);
}