arangodb erlang数据库驱动
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

176 rader
5.4 KiB

4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
  1. %% agency 管理进程的名称
  2. -define(agAgencyPoolMgr, agAgencyPoolMgr).
  3. -define(agBeamPool, agBeamPool).
  4. -define(agBeamAgency, agBeamAgency).
  5. %% HTTP 连接的保持活动超时由keep-alive-timeout(默认为300秒)控制 数据库安装后配置大一点 连接池进程默认半个小时发送一个续期请求
  6. -define(agKeepAliveTime, 3600000).
  7. -define(AgUndef, 0). %% Wait One Chunk start
  8. -define(AgCHeader, 1). %% Wait One Chunk header
  9. -define(AgCBody, 2). %% Wait One Chunk Body
  10. -define(AgCBodyStart, 3). %% Ret Start Wait One Chunk Body
  11. -define(AgCBodyGoOn, 4). %% Ret Go On Wait One Chunk Body
  12. -define(AgCDone, 5). %% receve one Chunk done
  13. -define(AgMDone, 6). %% receve one message done
  14. -define(AgMBIdx, 4).
  15. -define(AgCCIdx, 3).
  16. -define(AgTRIdx, 2).
  17. -define(AgPFIdx, 1).
  18. -define(AgHeaderSize, 24).
  19. %% 默认选项定义
  20. -define(AgDefBaseUrl, <<"http://127.0.0.1:8529">>).
  21. -define(AgDefDbName, <<"_system">>).
  22. -define(AgDefUser, <<"root">>).
  23. -define(AgDefPassWord, <<"156736">>).
  24. -define(AgDefBacklogSize, 1024).
  25. -define(AgDefConnTimeout, 5000).
  26. -define(AgDefPoolSize, 16).
  27. -define(AgDefIsReConn, true).
  28. -define(AgDefReConnMin, 500).
  29. -define(AgDefReConnMax, 120000).
  30. -define(AgDefTimeout, infinity).
  31. -define(AgDefVstSize, 29976).
  32. -define(AgDefAgencySlg, poll). %% bind rand poll
  33. -define(AgDefPid, self()).
  34. -define(AgDefSocketOpts, [binary, {active, true}, {nodelay, true}, {delay_send, true}, {keepalive, true}, {recbuf, 1048576}, {send_timeout, 5000}, {send_timeout_close, true}]).
  35. -define(AgGetListKV(Key, List), agMiscUtils:getListValue(Key, List, undefined)).
  36. -define(AgGetListKV(Key, List, Default), agMiscUtils:getListValue(Key, List, Default)).
  37. -define(AgWarn(Tag, Format, Data), error_logger:warning_msg("[~p:~p|~p]~p " ++ Format, [?MODULE, ?FUNCTION_NAME, ?LINE, Tag | Data])).
  38. -define(AgInfo(Tag, Format, Data), error_logger:info_msg("[~p:~p|~p]~p " ++ Format, [?MODULE, ?FUNCTION_NAME, ?LINE, Tag | Data])).
  39. -define(AgErr(Tag, Format, Data), error_logger:error_msg("[~p:~p|~p]~p " ++ Format, [?MODULE, ?FUNCTION_NAME, ?LINE, Tag | Data])).
  40. -ifdef(debug).
  41. -define(AgDebug(Tag, Format, Data), error_logger:info_msg("[~p:~p|~p]~p " ++ Format, [?MODULE, ?FUNCTION_NAME, ?LINE, Tag | Data])).
  42. -else.
  43. -define(AgDebug(_Tag, _Format, _Data), rel).
  44. -endif.
  45. -define(AgMDoDBConn, mDoDBConn).
  46. -define(AgUpgradeInfo, <<"VST/1.1\r\n\r\n">>).
  47. -record(agReq, {
  48. method :: method()
  49. , path :: path()
  50. , queryPars :: queryPars()
  51. , headers :: headers()
  52. , body :: body()
  53. , messageId :: pos_integer()
  54. , fromPid :: pid()
  55. , overTime = infinity :: timeout()
  56. , isSystem = false :: boolean()
  57. }).
  58. -record(agReqRet, {
  59. messageId :: messageId(),
  60. reply :: term()
  61. }).
  62. -record(reConnState, {
  63. min :: non_neg_integer(),
  64. max :: non_neg_integer() | infinity,
  65. current :: non_neg_integer() | undefined
  66. }).
  67. -record(srvState, {
  68. poolName :: poolName(),
  69. serverName :: serverName(),
  70. dbName :: binary(),
  71. reConnState :: undefined | reConnState(),
  72. socket :: undefined | ssl:sslsocket(),
  73. vstSize :: pos_integer(),
  74. timerRef :: undefined | reference()
  75. }).
  76. -record(cliState, {
  77. backlogSize = 0 :: integer(),
  78. revStatus = ?AgUndef :: pos_integer(),
  79. backlogNum = 0 :: integer(),
  80. messageId = 0 :: pos_integer(),
  81. chunkIdx = 0 :: pos_integer(),
  82. chunkSize = 0 :: pos_integer(),
  83. chunkBuffer = <<>> :: binary()
  84. }).
  85. -record(recvState, {
  86. revStatus = ?AgUndef :: pos_integer(),
  87. messageId = 0 :: pos_integer(),
  88. chunkCnt = -1 :: integer(),
  89. msgBuffer = <<>> :: binary(),
  90. chunkIdx = 0 :: pos_integer(),
  91. chunkSize = 0 :: pos_integer(),
  92. chunkBuffer = <<>> :: binary()
  93. }).
  94. -record(dbOpts, {
  95. host :: host(),
  96. port :: 0..65535,
  97. hostname :: hostName(),
  98. dbName :: binary(),
  99. protocol :: protocol(),
  100. poolSize :: poolSize(),
  101. user :: binary(),
  102. password :: binary(),
  103. vstSize :: pos_integer()
  104. }).
  105. -record(agencyOpts, {
  106. reconnect :: boolean(),
  107. agencySlg :: agencySlg(),
  108. backlogSize :: backlogSize(),
  109. reConnTimeMin :: pos_integer(),
  110. reConnTimeMax :: pos_integer()
  111. }).
  112. -type miRequest() :: #agReq{}.
  113. -type miRequestRet() :: #agReqRet{}.
  114. -type srvState() :: #srvState{}.
  115. -type cliState() :: #cliState{}.
  116. -type reConnState() :: #reConnState{}.
  117. -type recvState() :: #recvState{}.
  118. -type poolName() :: atom().
  119. -type poolNameOrSocket() :: atom() | socket().
  120. -type serverName() :: atom().
  121. -type protocol() :: ssl | tcp.
  122. -type method() :: binary().
  123. -type queryPars() :: map().
  124. -type headers() :: map().
  125. -type body() :: iodata() | undefined.
  126. -type path() :: binary().
  127. -type host() :: binary().
  128. -type hostName() :: string().
  129. -type poolSize() :: pos_integer().
  130. -type agencySlg() :: bind | rand | poll.
  131. -type backlogSize() :: pos_integer() | infinity.
  132. -type messageId() :: pos_integer().
  133. -type socket() :: inet:socket() | ssl:sslsocket().
  134. -type socketOpts() :: [gen_tcp:connect_option() | ssl:tls_client_option()].
  135. -type error() :: {error, term()}.
  136. -type dbCfg() ::
  137. {baseUrl, binary()} |
  138. {dbName, binary()} |
  139. {user, binary()} |
  140. {password, binary()} |
  141. {poolSize, poolSize()} |
  142. {vstSize, pos_integer()}.
  143. -type agencyCfg() ::
  144. {reconnect, boolean()} |
  145. {agencySlg, agencySlg()} |
  146. {backlogSize, backlogSize()} |
  147. {reConnTimeMin, pos_integer()} |
  148. {reConnTimeMax, pos_integer()}.
  149. -type dbCfgs() :: [dbCfg()].
  150. -type dbOpts() :: #dbOpts{}.
  151. -type agencyCfgs() :: [agencyCfg()].
  152. -type agencyOpts() :: #agencyOpts{}.