rebar3 服务器

This commit is contained in:
lwt
2026-05-19 11:30:21 +08:00
parent aeb18acee0
commit 03fd2da480
5187 changed files with 3670646 additions and 0 deletions
+291
View File
@@ -0,0 +1,291 @@
%%%-------------------------------------------------------------------
%%% @copyright (C) 2021, <COMPANY>
%%% @doc
%%%
%%% @end
%%% Created : 25. 5月 2021 11:15
%%%-------------------------------------------------------------------
-ifndef(__BASE_HRL__).
-define(__BASE_HRL__, true).
-include_lib("stdlib/include/ms_transform.hrl").
-include_lib("kernel/include/logger.hrl").
-define(RPC_CALL_TIMEOUT, 5000).
-define(CALL_TIMEOUT, 5000).
%% atom define
%% 游戏校验key
-define(AUTH_KEY, "4399-auth-key").
-define(TBL_KEY, "44c78a8401fd692bdefb58a32220861b").
-define(RECHARGE_KEY, "7e532cad3b95689afc4fddb7e9a83e09").
-define(FN_NORMAL_KEY, "aef842b91f54a878d00ad0897ed02473").
-define(CLIENT_KEY, "0248537b34d9cd80f8121fe07ec58eee").
-define(RCC_KEY, "53b16e47b634cd6046e4da2884ff77d8").
-define(API_KEY, "80260282bb470b304b60c03ab113e3ea"). % 通用api key
-ifndef(OK).
-define(OK, ok).
-endif.
%% 这里故意用的err,避免以系统抛异常的error冲突
-ifndef(ERROR).
-define(ERROR, error).
-endif.
%% 这里故意用的err,避免以系统抛异常的error冲突
-ifndef(ERR).
-define(ERR, err).
-endif.
-ifndef(TRUE).
-define(TRUE, true).
-endif.
-ifndef(FALSE).
-define(FALSE, false).
-endif.
-ifndef(TRUE_INT).
-define(TRUE_INT, 1).
-endif.
-ifndef(FALSE_INT).
-define(FALSE_INT, 0).
-endif.
-define(INT_TO_BOOLEAN(I), I =/= 0).
-define(BOOLEAN_TO_INT(I), ?IF(I, ?TRUE_INT, ?FALSE_INT)).
-ifndef(UNDEFINED).
-define(UNDEFINED, undefined).
-endif.
-ifndef(CONTINUE).
-define(CONTINUE, continue).
-endif.
-ifndef(IGNORE).
-define(IGNORE, ignore).
-endif.
-ifndef(INFINITY).
-define(INFINITY, infinity).
-endif.
-ifndef(NONE).
-define(NONE, none).
-endif.
-ifndef(STOP).
-define(STOP, stop).
-endif.
-ifndef(SKIP).
-define(SKIP, skip).
-endif.
-ifndef(DISABLED).
-define(DISABLED, disabled).
-endif.
-ifndef(ENABLED).
-define(ENABLED, enabled).
-endif.
-ifndef(ONLINE).
-define(ONLINE, online).
-endif.
-ifndef(OFFLINE).
-define(OFFLINE, offline).
-endif.
-ifndef(VALUE).
-define(VALUE, value).
-endif.
-ifndef(CONTINUE).
-define(CONTINUE, continue).
-endif.
-define(IF(C, T), (?IF(C, T, skip))).
-define(IF(C, T, F), (case (C) of true -> (T); false -> (F) end)).
-define(MAP_GET(__K__, __Map__, __Default__), (case (__Map__) of #{__K__ := __V__} -> __V__; #{} -> (__Default__) end)).
-define(THROW(ErrCode), throw(ErrCode)).
-define(ASSERT(Express),
case (Express) of
true ->
ok;
false ->
error(assert_error)
end).
-define(ASSERT(Express, ErrCode),
case (Express) of
true ->
ok;
false ->
error(ErrCode)
end).
%% try_catch 捕获玩家自己抛的异常,需要玩家自行匹配
-define(TRY_CATCH(Fun),
try
(Fun)
catch
_:TRY_CACHE_Error:Trace ->
?ERROR(?MODULE, "snip err, Error = ~p~n", [{TRY_CACHE_Error, Trace}]),
TRY_CACHE_Error
end
).
-define(CHILD_SPEC(I, Type), {I, {I, start_link, []}, permanent, 50000, Type, [I]}).
-define(CHILD_SPEC(I, Type, Args), {I, {I, start_link, Args}, permanent, 50000, Type, [I]}).
-define(CHILD_SPEC(C, I, Type, Args), {C, {I, start_link, Args}, permanent, 50000, Type, [I]}).
%% 控制台打印
-define(PRINT(F), ?PRINT(F, [])).
-define(PRINT(F, D), (io:format("~w:~w/~w:~w ~w ~w " ++ F ++ "\n", [?MODULE, ?FUNCTION_NAME, ?FUNCTION_ARITY, ?LINE, self(), erlang:get('!role_id!') | D]))).
-define(DEBUG(T, F, D), ?LOG_DEBUG(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(INFO(T, F, D), ?LOG_INFO(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(WARN(T, F, D), ?LOG_WARNING(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(CRIT(T, F, D), ?LOG_CRITICAL(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(NOTICE(T, F, D), ?LOG_NOTICE(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(ERROR(T, F, D), ?LOG_ERROR(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(DEBUG(F, D), ?LOG_DEBUG(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(INFO(F, D), ?LOG_INFO(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(WARN(F, D), ?LOG_WARNING(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(CRIT(F, D), ?LOG_CRITICAL(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(NOTICE(F, D), ?LOG_NOTICE(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(ERROR(F, D), ?LOG_ERROR(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_base]})).
-define(DEBUG_TAG(Tag, Data), ?DEBUG(Tag, "~p=~w", [??Data, Data])).
%% http单独打印
-define(HTTP_DEBUG(T, F, D), ?LOG_DEBUG(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_INFO(T, F, D), ?LOG_INFO(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_WARN(T, F, D), ?LOG_WARNING(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_CRIT(T, F, D), ?LOG_CRITICAL(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_NOTICE(T, F, D), ?LOG_NOTICE(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_ERROR(T, F, D), ?LOG_ERROR(F, D, #{tag => T, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_DEBUG(F, D), ?LOG_DEBUG(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_INFO(F, D), ?LOG_INFO(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_WARN(F, D), ?LOG_WARNING(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_CRIT(F, D), ?LOG_CRITICAL(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_NOTICE(F, D), ?LOG_NOTICE(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_http]})).
-define(HTTP_ERROR(F, D), ?LOG_ERROR(F, D, #{tag => ?MODULE, id => erlang:get('!role_id!'), domain => [ms_http]})).
%% 协议录制
-define(GET_PROTO_TIME, (
case erlang:get(proto_time) of
?UNDEFINED ->
erlang:put(proto_time, misc_lib:now_ms()),
0;
ProtoTime ->
ProtoTime1 = misc_lib:now_ms(),
erlang:put(proto_time, ProtoTime1),
ProtoTime1 - ProtoTime
end)).
-define(PROTO_TRACE(F, D), ?LOG_DEBUG(F, D, #{tag => proto, time1=>?GET_PROTO_TIME, id => erlang:get('!role_id!'), domain=>[proto]})).
%% 打印错误码日志
-define(CODE_LOG(Code, Desc, LogArgs), ?INFO(?MODULE, "err_code:~p ~ts ~p=~w", [Code, Desc, ??LogArgs, LogArgs])).
%% 错误码处理, 打印错误码日志,返回{err,code}
-define(ERROR_CODE(Code, LogArgs),
begin
?CODE_LOG(Code, "", LogArgs),
{?ERR, Code}
end).
%% 错误码处理, 打印错误码日志,返回{err,code}
-define(ERROR_CODE(Code, Desc, LogArgs),
begin
?CODE_LOG(Code, Desc, LogArgs),
{?ERR, Code}
end).
-define(SECONDS_PER_MINUTE, 60).
-define(SECONDS_PER_HOUR, 3600).
-define(SECONDS_PER_DAY, 86400).
-define(SECONDS_PER_WEEK, 604800).
-define(SECONDS_PER_YEAR, 31536000).
-define(SECONDS_PER_LEAP_YEAR, 31622400).
-define(SECONDS_FROM_0_TO_1970, 62167219200).
-define(MSECS_PER_SEC, 1000).
-define(MSECS_PER_MINUTE, 60000).
-define(MSECS_PER_HOUR, 3600000).
-define(MSECS_PER_DAY, 86400000).
-define(MSECS_PER_WEEK, 604800000).
-define(DAYS_PER_WEEK, 7).
-define(DAYS_PER_YEAR, 365).
-define(DAYS_PER_LEAP_YEAR, 366).
-define(DAYS_PER_4YEARS, 1461).
-define(DAYS_PER_100YEARS, 36524).
-define(DAYS_PER_400YEARS, 146097).
-define(DAYS_FROM_0_TO_1970, 719528).
-define(TEN, 10). % 0.01k
-define(ONE_HUNDRED, 100). % 0.1k
-define(ONE_THOUSAND, 1000). % 1k
-define(TEN_THOUSAND, 10000). % 1w
-define(HUNDRED_THOUSAND, 100000). % 10w
-define(ONE_MILLION, 1000000). % 100w
-define(HUNDRED_MILLION, 100000000). % 1亿
-define(INTMAX, 2147483647).
-define(UINTMAX, 4294967294).
-define(UINT64MAX, 18446744073709551615).
-define(RECORD_NAME_POS, 1).
-type role_id() :: integer().
%% 日常清理偏移时间
-define(DAILY_HOUR, 0).
-define(DAILY_RESET_SHIFT_TIME, (3600 * ?DAILY_HOUR)).
-define(ETS_OPTIONS, [set, public, named_table, {keypos, 1}, {read_concurrency, true}, {write_concurrency, auto}]).
%% todo,以下宏属于游戏相关的,写在这里是因为登录服和游戏服都要用到同一套宏定义
%% 服务器状态
-define(SERVER_STATUS_SMOOTH, 1). %% 服务器状态 - 流畅
-define(SERVER_STATUS_CROWD, 2). %% 服务器转态 - 拥挤
-define(SERVER_STATUS_FULL, 3). %% 服务器状态 - 爆满
%% 蜂鸟角色互通平台
-define(FN_PLATFORM_APP_AND, <<"1">>).
-define(FN_PLATFORM_APP_IOS, <<"2">>).
-define(FN_PLATFORM_WECHAT_AND, <<"1388">>).
-define(FN_PLATFORM_WECHAT_IOS, <<"1390">>).
-define(FN_PLATFORM_INTER_LIST, [?FN_PLATFORM_APP_AND, ?FN_PLATFORM_APP_IOS, ?FN_PLATFORM_WECHAT_AND, ?FN_PLATFORM_WECHAT_IOS]).
%% 角色类型
-define(ACCOUNT_TYPE_VISITOR, 0). %% 游客
-define(ACCOUNT_TYPE_NORMAL, 1). %% 普通玩家
-define(ACCOUNT_TYPE_INNER, 2). %% 内部玩家
-define(ACCOUNT_TYPE_INNER_MGR, 3). %% 内部玩家管理员
-define(SERVER_ACTIVE_AUTO, 0). %% 服务器自动激活,开服时间到了自动开服
-define(SERVER_ACTIVE_CLOSE, 1). %% 服务器未激活,开服时间到了也不开服
-define(SERVER_ACTIVE_OPEN, 2). %% 服务器立刻激活,马上开服
-define(PLATFORM_ZONE_ALL, 0). %% 通用专区
-define(PLATFORM_ZONE_WECHAT, 1). %% 微信专区
-define(PLATFORM_ZONE_APP, 2). %% app专区
-define(PLATFORM_ZONE_WECHAT_FN_PLATFORMS, [?FN_PLATFORM_WECHAT_AND, ?FN_PLATFORM_WECHAT_IOS]).
-endif.