%%% ----------------------------------------------------------------------------
%%% @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.
