%%% ---------------------------------------------------------------------------- %%% @author huangyongxing@yeah.net %%% @doc %%% 跨服数据结构 %%% @end %%% ---------------------------------------------------------------------------- -ifndef(CLUSTERS_HRL). -define(CLUSTERS_HRL, ok). %% 重连跨服服务器间隔时间 -define(RECONNECT_TIME, 30000). %% 跨服中游戏服节点数据管理 % -define(SQL_GET_CLUSTER_NODES, <<"SELECT `node` FROM `clusters`">>). -define(SQL_TRUNCATE_CLUSTERS, <<"TRUNCATE TABLE `clusters`">>). -define(SQL_REPLACE_CLUSTERS_NODE, <<"REPLACE INTO `clusters` (`node`,`server_id`) VALUES('~ts', ~w)"/utf8>>). -define(SQL_DELETE_CLUSTERS_NODE, <<"DELETE from `clusters` WHERE `server_id` = ~w"/utf8>>). %% 节点类型 -define(CLUSTER_NODE, 0). % 游戏服节点 -define(CLUSTER_CENTER, 1). % 跨服中心节点 %% 游戏服id对应节点信息 -define(SERVER_INFO, server_info). -record(server_info, { server_id = 0 % 游戏服id ,node = undefined % 节点名 ,now_server_id = 0 % 合服后游戏服最新的ServerId ,server_num = 0 % 游戏服编号 ,platform = <<>> % 平台名 ,alive = 0 % 当前连上来的服务器为1,如果服务器断开,则置为0 }). %% 跨服中心节点数据 -record(clusters_center, { node % 跨服本节点名 ,nodes % 跨服节点列表 }). %% 跨服中心单个节点数据 -record(game_node, { node = undefined % 节点名 ,server_id = 0 % 游戏服id(后台唯一Id) ,platform = "" % 平台名 ,server_num = 0 % 服务器编号(玩家可见的服编号) ,server_name = <<>> % 游戏服名称 ,pid = undefined % 本地服节点的跨服连接进程pid ,monitor = undefined % 对本地服节点管理进程的monitor(跨服中心用) ,open_time = 0 % 具体开服时间戳 ,merge_server_ids = [] % 合服server_id列表 }). %% 跨服本地服节点状态数据 -record(clusters_node, { center_node = none % 跨服中心节点 ,cookie = undefined % 连接cookie ,platform = "" % 平台 ,server_id = 0 % server_id ,conn_times = 0 % 连接次数 ,conn_timer = undefined % 连接定时器 ,pid = undefined % 跨服中心管理进程pid(用于判定是否已经连接) ,monitor = undefined % 对跨服中心管理进程的monitor ,conn_worker = undefined % 负责与center节点初步建立连接的进程pid ,wait_conn = false % 是否等待conn_worker处理连接状态 }). -endif.