game_server.entity_domain
简介
组件接口
entity_domain.gs
基于权重分配的entity域 管理器,处理游戏服务器中实体对象的域分配
- 通过entity_domain分配出来的域,关联着一个资源对象
- 相同的域共享资源对象所提供的资源:心跳对象、延迟处理对象等
- 域的分配策略: 优先获取权重值最小的资源对象所在的域
函数原型 | 函数作用 |
---|---|
void setup(map para = nil) | 本模块的初始化函数 |
domain create_entity_domain(mixed class_id, string entity_rid = nil) | 为一个有class id的实体申请域 |
void release_entity_domain(mixed entity_ob_or_rid) | 实体归还所在的域 |
domain exclusive_allocate_domain(string rid) | 实体以独占模式分配一个域 |
domain allocate_domain(string rid, int weight = 1) | 实体以普通模式(权重)分配一个域 |
void release_domain(string rid) | 实体归还域 |
object find_asset_ob(domain d) | 查找域对应的资源对象 |
object find_asset_ob_by_rid(string rid) | 根据rid查找对应的资源对象 |
void dump_all() | 调试接口: 输出所有资源池信息 |
FEntityDomainAsset.gs
实体对象使用域资源的组件 实体对象如果希望共享域资源,需要使用此组件
函数原型 | 函数作用 |
---|---|
object get_asset_ob() | 获取使用的域资源对象 |
object get_delay() | 获取使用的延迟对象 |
样例
public void test()
{
cfg.init_by_map({
"server_id" : 1,
"disable_mongo" : true
});
engine.boot();
map para = {
"asset_pool" : {
"initial_asset_count" : 1
}
};
entity_domain.setup(para);
string rid = RidD.new_rid("T");
domain d = entity_domain.create_entity_domain(1, rid);
test_equal(d != nil, true);
string rid2 = RidD.new_rid("X");
domain d2 = entity_domain.allocate_domain(rid2, 10);
test_equal(d2 != nil, true);
test_equal(d == d2, true);
string rid3 = RidD.new_rid("E");
domain d3 = entity_domain.exclusive_allocate_domain(rid3);
test_equal(d3 != nil, true);
test_equal(d != d3, true);
}