Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

208 wiersze
5.6 KiB

5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
5 lat temu
  1. %% agency 管理进程的名称
  2. -define(agAgencyPoolMgr, agAgencyPoolMgr).
  3. %% beam cache 模块名
  4. -define(agBeamPool, agBeamPool).
  5. -define(agBeamAgency, agBeamAgency).
  6. %% 默认值定义
  7. -define(DEFAULT_BASE_URL, <<"http://120.77.213.39:8529">>).
  8. -define(DEFAULT_DBNAME, <<"_db/_system">>).
  9. -define(USER_PASSWORD, <<"root:156736">>).
  10. -define(DEFAULT_BACKLOG_SIZE, 1024).
  11. -define(DEFAULT_CONNECT_TIMEOUT, 5000).
  12. -define(DEFAULT_POOL_SIZE, 16).
  13. -define(DEFAULT_IS_RECONNECT, true).
  14. -define(DEFAULT_RECONNECT_MIN, 500).
  15. -define(DEFAULT_RECONNECT_MAX, 120000).
  16. -define(DEFAULT_TIMEOUT, infinity).
  17. -define(DEFAULT_PID, self()).
  18. -define(DEFAULT_SOCKET_OPTS, [binary, {active, true}, {delay_send, true}, {nodelay, true}, {keepalive, true}, {recbuf, 1048576}, {send_timeout, 5000}, {send_timeout_close, true}]).
  19. -define(GET_FROM_LIST(Key, List), agMiscUtils:getListValue(Key, List, undefined)).
  20. -define(GET_FROM_LIST(Key, List, Default), agMiscUtils:getListValue(Key, List, Default)).
  21. -define(WARN(Tag, Format, Data), agMiscUtils:warnMsg(Tag, Format, Data)).
  22. -define(miDoNetConnect, miDoNetConnect).
  23. -record(miRequest, {
  24. method :: method()
  25. , path :: path()
  26. , headers :: headers()
  27. , body :: body()
  28. , requestId :: tuple()
  29. , fromPid :: pid()
  30. , overTime = infinity :: timeout()
  31. , isSystem = false :: boolean()
  32. }).
  33. -record(miAgHttpCliRet, {
  34. requestId :: requestId(),
  35. reply :: term()
  36. }).
  37. -record(requestRet, {
  38. statusCode :: undefined | 100..505,
  39. contentLength :: undefined | non_neg_integer() | chunked,
  40. headers :: undefined | [binary()],
  41. body :: undefined | binary()
  42. }).
  43. -record(recvState, {
  44. stage = header :: header | body | done, %% 一个请求收到tcp可能会有多个包 最多分三个阶接收
  45. contentLength :: undefined | non_neg_integer() | chunked,
  46. statusCode :: undefined | 100..505,
  47. headers :: undefined | [binary()],
  48. buffer = <<>> :: binary(),
  49. body = <<>> :: binary()
  50. }).
  51. -record(reconnectState, {
  52. min :: non_neg_integer(),
  53. max :: non_neg_integer() | infinity,
  54. current :: non_neg_integer() | undefined
  55. }).
  56. -record(srvState, {
  57. poolName :: poolName(),
  58. serverName :: serverName(),
  59. userPassWord :: binary(),
  60. host :: binary(),
  61. dbName :: binary(),
  62. rn :: binary:cp(),
  63. rnrn :: binary:cp(),
  64. reconnectState :: undefined | reconnectState(),
  65. socket :: undefined | ssl:sslsocket(),
  66. timerRef :: undefined | reference()
  67. }).
  68. -record(cliState, {
  69. isHeadMethod = false :: boolean(), %% 是否是<<"HEAD">>请求方法
  70. %method = undefined :: undefined | method(),
  71. requestsIn = 1 :: non_neg_integer(),
  72. requestsOut = 0 :: non_neg_integer(),
  73. backlogNum = 0 :: integer(),
  74. backlogSize = 0 :: integer(),
  75. status = leisure :: waiting | leisure,
  76. curInfo = undefined :: tuple(),
  77. recvState = undefined :: recvState() | undefined
  78. }).
  79. -record(dbOpts, {
  80. host :: host(),
  81. port :: 0..65535,
  82. hostname :: hostName(),
  83. dbName :: binary(),
  84. protocol :: protocol(),
  85. poolSize :: binary(),
  86. userPassword :: binary(),
  87. socketOpts :: socketOpts()
  88. }).
  89. -record(agencyOpts, {
  90. reconnect :: boolean(),
  91. backlogSize :: backlogSize(),
  92. reconnectTimeMin :: pos_integer(),
  93. reconnectTimeMax :: pos_integer()
  94. }).
  95. -type miRequest() :: #miRequest{}.
  96. -type miAgHttpCliRet() :: #miAgHttpCliRet{}.
  97. -type requestRet() :: #requestRet{}.
  98. -type recvState() :: #recvState{}.
  99. -type srvState() :: #srvState{}.
  100. -type cliState() :: #cliState{}.
  101. -type reconnectState() :: #reconnectState{}.
  102. -type poolName() :: atom().
  103. -type poolNameOrSocket() :: atom() | socket().
  104. -type serverName() :: atom().
  105. -type protocol() :: ssl | tcp.
  106. -type method() :: binary().
  107. -type headers() :: [{iodata(), iodata()}].
  108. -type body() :: iodata() | undefined.
  109. -type path() :: binary().
  110. -type host() :: binary().
  111. -type hostName() :: string().
  112. -type poolSize() :: pos_integer().
  113. -type backlogSize() :: pos_integer() | infinity.
  114. -type requestId() :: {serverName(), reference()}.
  115. -type socket() :: inet:socket() | ssl:sslsocket().
  116. -type socketOpts() :: [gen_tcp:connect_option(), ...].
  117. -type error() :: {error, term()}.
  118. -type dbCfg() ::
  119. {baseUrl, binary()} |
  120. {dbName, binary()} |
  121. {userPassword, binary()} |
  122. {poolSize, poolSize()} |
  123. {socketOpts, [gen_tcp:connect_option(), ...]}.
  124. -type agencyCfg() ::
  125. {reconnect, boolean()} |
  126. {backlogSize, backlogSize()} |
  127. {reconnectTimeMin, pos_integer()} |
  128. {reconnectTimeMax, pos_integer()}.
  129. -type dbCfgs() :: [dbCfg()].
  130. -type dbOpts() :: #dbOpts{}.
  131. -type agencyCfgs() :: [agencyCfg()].
  132. -type agencyOpts() :: #agencyOpts{}.
  133. %% http header 头
  134. %% -type header() ::
  135. %% 'Cache-Control' |
  136. %% 'Connection' |
  137. %% 'Date' |
  138. %% 'Pragma'|
  139. %% 'Transfer-Encoding' |
  140. %% 'Upgrade' |
  141. %% 'Via' |
  142. %% 'Accept' |
  143. %% 'Accept-Charset'|
  144. %% 'Accept-Encoding' |
  145. %% 'Accept-Language' |
  146. %% 'Authorization' |
  147. %% 'From' |
  148. %% 'Host' |
  149. %% 'If-Modified-Since' |
  150. %% 'If-Match' |
  151. %% 'If-None-Match' |
  152. %% 'If-Range'|
  153. %% 'If-Unmodified-Since' |
  154. %% 'Max-Forwards' |
  155. %% 'Proxy-Authorization' |
  156. %% 'Range'|
  157. %% 'Referer' |
  158. %% 'User-Agent' |
  159. %% 'Age' |
  160. %% 'Location' |
  161. %% 'Proxy-Authenticate'|
  162. %% 'Public' |
  163. %% 'Retry-After' |
  164. %% 'Server' |
  165. %% 'Vary' |
  166. %% 'Warning'|
  167. %% 'Www-Authenticate' |
  168. %% 'Allow' |
  169. %% 'Content-Base' |
  170. %% 'Content-Encoding'|
  171. %% 'Content-Language' |
  172. %% 'Content-Length' |
  173. %% 'Content-Location'|
  174. %% 'Content-Md5' |
  175. %% 'Content-Range' |
  176. %% 'Content-Type' |
  177. %% 'Etag'|
  178. %% 'Expires' |
  179. %% 'Last-Modified' |
  180. %% 'Accept-Ranges' |
  181. %% 'Set-Cookie'|
  182. %% 'Set-Cookie2' |
  183. %% 'X-Forwarded-For' |
  184. %% 'Cookie' |
  185. %% 'Keep-Alive' |
  186. %% 'Proxy-Connection' |
  187. %% binary() |
  188. %% string().