|
|
- %% agency 管理进程的名称
- -define(agAgencyPoolMgr, agAgencyPoolMgr).
-
- -define(agBeamPool, agBeamPool).
- -define(agBeamAgency, agBeamAgency).
-
- %% HTTP 连接的保持活动超时由keep-alive-timeout(默认为300秒)控制 数据库安装后配置大一点 连接池进程默认半个小时发送一个续期请求
- -define(agKeepAliveTime, 3600000).
-
- -define(AgUndef, 0). %% Wait One Chunk start
- -define(AgCHeader, 1). %% Wait One Chunk header
- -define(AgCBody, 2). %% Wait One Chunk Body
- -define(AgCBodyStart, 3). %% Ret Start Wait One Chunk Body
- -define(AgCBodyGoOn, 4). %% Ret Go On Wait One Chunk Body
- -define(AgCDone, 5). %% receve one Chunk done
- -define(AgMDone, 6). %% receve one message done
-
- -define(AgMBIdx, 4).
- -define(AgCCIdx, 3).
- -define(AgTRIdx, 2).
- -define(AgPFIdx, 1).
-
- -define(AgHeaderSize, 24).
-
- %% 默认选项定义
- -define(AgDefBaseUrl, <<"http://127.0.0.1:8529">>).
- -define(AgDefDbName, <<"_system">>).
- -define(AgDefUser, <<"root">>).
- -define(AgDefPassWord, <<"156736">>).
-
- -define(AgDefBacklogSize, 1024).
- -define(AgDefConnTimeout, 5000).
- -define(AgDefPoolSize, 16).
- -define(AgDefIsReConn, true).
- -define(AgDefReConnMin, 500).
- -define(AgDefReConnMax, 120000).
- -define(AgDefTimeout, infinity).
- -define(AgDefVstSize, 29976).
- -define(AgDefAgencySlg, poll). %% bind rand poll
- -define(AgDefPid, self()).
- -define(AgDefSocketOpts, [binary, {active, true}, {nodelay, true}, {delay_send, true}, {keepalive, true}, {recbuf, 1048576}, {send_timeout, 5000}, {send_timeout_close, true}]).
-
- -define(AgGetListKV(Key, List), agMiscUtils:getListValue(Key, List, undefined)).
- -define(AgGetListKV(Key, List, Default), agMiscUtils:getListValue(Key, List, Default)).
-
- -define(AgWarn(Tag, Format, Data), error_logger:warning_msg("[~p:~p|~p]~p " ++ Format, [?MODULE, ?FUNCTION_NAME, ?LINE, Tag | Data])).
- -define(AgInfo(Tag, Format, Data), error_logger:info_msg("[~p:~p|~p]~p " ++ Format, [?MODULE, ?FUNCTION_NAME, ?LINE, Tag | Data])).
- -define(AgErr(Tag, Format, Data), error_logger:error_msg("[~p:~p|~p]~p " ++ Format, [?MODULE, ?FUNCTION_NAME, ?LINE, Tag | Data])).
-
- -ifdef(debug).
- -define(AgDebug(Tag, Format, Data), error_logger:info_msg("[~p:~p|~p]~p " ++ Format, [?MODULE, ?FUNCTION_NAME, ?LINE, Tag | Data])).
- -else.
- -define(AgDebug(_Tag, _Format, _Data), rel).
- -endif.
-
- -define(AgMDoDBConn, mDoDBConn).
- -define(AgUpgradeInfo, <<"VST/1.1\r\n\r\n">>).
-
- -record(agReq, {
- method :: method()
- , path :: path()
- , queryPars :: queryPars()
- , headers :: headers()
- , body :: body()
- , messageId :: pos_integer()
- , fromPid :: pid()
- , overTime = infinity :: timeout()
- , isSystem = false :: boolean()
- }).
-
- -record(agReqRet, {
- messageId :: messageId(),
- reply :: term()
- }).
-
- -record(reConnState, {
- min :: non_neg_integer(),
- max :: non_neg_integer() | infinity,
- current :: non_neg_integer() | undefined
- }).
-
- -record(srvState, {
- poolName :: poolName(),
- serverName :: serverName(),
- dbName :: binary(),
- reConnState :: undefined | reConnState(),
- socket :: undefined | ssl:sslsocket(),
- vstSize :: pos_integer(),
- timerRef :: undefined | reference()
- }).
-
- -record(cliState, {
- backlogSize = 0 :: integer(),
- revStatus = ?AgUndef :: pos_integer(),
- backlogNum = 0 :: integer(),
- messageId = 0 :: pos_integer(),
- chunkIdx = 0 :: pos_integer(),
- chunkSize = 0 :: pos_integer(),
- chunkBuffer = <<>> :: binary()
- }).
-
- -record(recvState, {
- revStatus = ?AgUndef :: pos_integer(),
- messageId = 0 :: pos_integer(),
- chunkCnt = -1 :: integer(),
- msgBuffer = <<>> :: binary(),
- chunkIdx = 0 :: pos_integer(),
- chunkSize = 0 :: pos_integer(),
- chunkBuffer = <<>> :: binary()
- }).
-
- -record(dbOpts, {
- host :: host(),
- port :: 0..65535,
- hostname :: hostName(),
- dbName :: binary(),
- protocol :: protocol(),
- poolSize :: poolSize(),
- user :: binary(),
- password :: binary(),
- vstSize :: pos_integer()
- }).
-
- -record(agencyOpts, {
- reconnect :: boolean(),
- agencySlg :: agencySlg(),
- backlogSize :: backlogSize(),
- reConnTimeMin :: pos_integer(),
- reConnTimeMax :: pos_integer()
- }).
-
- -type miRequest() :: #agReq{}.
- -type miRequestRet() :: #agReqRet{}.
- -type srvState() :: #srvState{}.
- -type cliState() :: #cliState{}.
- -type reConnState() :: #reConnState{}.
- -type recvState() :: #recvState{}.
-
- -type poolName() :: atom().
- -type poolNameOrSocket() :: atom() | socket().
- -type serverName() :: atom().
- -type protocol() :: ssl | tcp.
- -type method() :: binary().
- -type queryPars() :: map().
- -type headers() :: map().
- -type body() :: iodata() | undefined.
- -type path() :: binary().
- -type host() :: binary().
- -type hostName() :: string().
- -type poolSize() :: pos_integer().
- -type agencySlg() :: bind | rand | poll.
- -type backlogSize() :: pos_integer() | infinity.
- -type messageId() :: pos_integer().
- -type socket() :: inet:socket() | ssl:sslsocket().
- -type socketOpts() :: [gen_tcp:connect_option() | ssl:tls_client_option()].
- -type error() :: {error, term()}.
-
- -type dbCfg() ::
- {baseUrl, binary()} |
- {dbName, binary()} |
- {user, binary()} |
- {password, binary()} |
- {poolSize, poolSize()} |
- {vstSize, pos_integer()}.
-
- -type agencyCfg() ::
- {reconnect, boolean()} |
- {agencySlg, agencySlg()} |
- {backlogSize, backlogSize()} |
- {reConnTimeMin, pos_integer()} |
- {reConnTimeMax, pos_integer()}.
-
- -type dbCfgs() :: [dbCfg()].
- -type dbOpts() :: #dbOpts{}.
- -type agencyCfgs() :: [agencyCfg()].
- -type agencyOpts() :: #agencyOpts{}.
|