跳到主要内容

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