跳到主要内容

listserver_client

简介

作为客户端接入目录服务器listserver

本pkg做为连接listserver的客户端

目录服务器接入说明

组件接口

FListServerClientCmds.gs

目录服客户端命令接口组件

函数原型函数作用
ListServerClientCmdBase ping()新建一个发送客户端命令[ping]的class实例
ListServerClientCmdBase internal_add_account_cache()新建一个发送客户端命令[internal_add_account_cache]的class实例
ListServerClientCmdBase internal_add_server_to_balance_group()新建一个发送客户端命令[internal_add_server_to_balance_group]的class实例
ListServerClientCmdBase internal_get_all_gs()新建一个发送客户端命令[internal_get_all_gs]的class实例
ListServerClientCmdBase internal_get_server_field_values()新建一个发送客户端命令[internal_get_server_field_values]的class实例
ListServerClientCmdBase internal_remove_account_cache()新建一个发送客户端命令[internal_remove_account_cache]的class实例
ListServerClientCmdBase internal_update_account_cache()新建一个发送客户端命令[internal_update_account_cache]的class实例
ListServerClientCmdBase internal_update_gs()新建一个发送客户端命令[internal_update_gs]的class实例

listserver_client.gs

函数原型函数作用
object create_client(map para)创建一个目录服务器客户端对象
void start(map para)开启通过内部私有协议访问listserver
bool send(string cmd, map args = )通过私有协议发送请求,不等待结果返回
array send_request(string cmd, map args = , int timeout = "DEFAULT_REQUEST_TIMEOUT")通过私有协议发送请求,等待结果返回
void start_via_http(map para)开启通过http协议访问listserver
array send_request_via_http(string method, map args = )通过http协议发送请求,等待结果返回
ListServerClientHttpRequest add_into_balance_group()新建一个发送http接口[add_into_balance_group]的class实例
ListServerClientHttpRequest create_balance_group()新建一个发送http接口[create_balance_group]的class实例
ListServerClientHttpRequest destroy_balance_group()新建一个发送http接口[destroy_balance_group]的class实例
ListServerClientHttpRequest list_account_servers()新建一个发送http接口[list_account_servers]的class实例
ListServerClientHttpRequest list_balance_groups()新建一个发送http接口[list_balance_groups]的class实例
ListServerClientHttpRequest list_recommend_servers()新建一个发送http接口[list_recommend_servers]的class实例
ListServerClientHttpRequest list_server_field_values()新建一个发送http接口[list_server_field_values]的class实例
ListServerClientHttpRequest list_servers()新建一个发送http接口[list_servers]的class实例
ListServerClientHttpRequest list_ungrouped_servers()新建一个发送http接口[list_ungrouped_servers]的class实例
ListServerClientHttpRequest list_visible_servers()新建一个发送http接口[list_visible_servers]的class实例
ListServerClientHttpRequest query_account()新建一个发送http接口[query_account]的class实例
ListServerClientHttpRequest query_server()新建一个发送http接口[query_server]的class实例
ListServerClientHttpRequest remove_from_balance_group()新建一个发送http接口[remove_from_balance_group]的class实例
ListServerClientHttpRequest set_balance_group_attribs()新建一个发送http接口[set_balance_group_attribs]的class实例

ListServerClientCmdBase

目录服客户端命令的基础class

成员变量

变量名类型初始值须初始化描述
cmdstringnil可选命令名称
client_obobjectnil可选客户端对象

成员方法

函数原型函数作用
bool send(map args)发送客户端命令(不等待结果)
mixed send_request(map args, int timeout_seconds = -1)发送消息并且等待消息结果(阻塞等待)

ListServerClientHttpRequest

客户端通过http接口访问目录服务器的基础class

成员变量

变量名类型初始值须初始化描述
hoststringnil可选服务器主机地址
methodstringnil可选接口名称
paramapnil可选接口参数

成员方法

函数原型函数作用
void set_host(string host)设置服务器主机地址
void set_method(string method)设置接口名称
void set_para(map para)设置接口参数
void append_para(string key, mixed value)追加接口参数
array request(map args = nil)发起http请求

样例


import pkg.listserver_client;

object client_ob = nil;
void create()
{
// 创建一个管理员权限的客户端
map para = {
"host" : "127.0.0.1",
"port" : 15701,
"port_recv_size" : 131072,
};
client_ob = listserver_client.create_client(para);

// 初始化,通过http协议访问
map http_para = {
"host" : "http://127.0.0.1:4567",
};
listserver_client.start_via_http(http_para);
}

// 通知listserver更新账号角色缓存
public void update_account_cache(object user)
{
map info = {
"name" : user.get_name(),
"mp_level" : user.get_level("mp"),
"hp_level" : user.get_level("hp"),
};
map args = {
"account_id" : user.get_account_id(),
"rid" : user.get_rid(),
"server_id" : SystemD.get_server_id(),
"info" : info,
};
client_ob.internal_update_account_cache().send(args);
}

public void update_gs_to_listserver()
{
map data = collect_update_data("online");
map args = {
"id" : SystemD.get_server_id(),
"data" : data,
};
client_ob.internal_update_gs().send(args);
}

// 列出推荐服务器
public mixed list_recommend_servers()
{
map para = {
};
let bool success, mixed result = listserver_client.list_recommend_servers().request(para);
if (! success)
return nil;

if (! result)
return nil;

return result;
}