Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

150 рядки
4.3 KiB

5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
5 роки тому
  1. %% beam cache 模块名
  2. -define(agBeamPool, agBeamPool).
  3. -define(agBeamAgency, agBeamAgency).
  4. %% 默认值定义
  5. -define(DEFAULT_BASE_URL, <<"http://127.0.0.1:8529">>).
  6. -define(USER_PASSWORD, <<"root:156736">>).
  7. -define(DEFAULT_BACKLOG_SIZE, 1024).
  8. -define(DEFAULT_INIT_OPTS, undefined).
  9. -define(DEFAULT_CONNECT_TIMEOUT, 5000).
  10. -define(DEFAULT_POOL_SIZE, 16).
  11. -define(DEFAULT_POOL_STRATEGY, random).
  12. -define(DEFAULT_POOL_OPTIONS, []).
  13. -define(DEFAULT_IS_RECONNECT, true).
  14. -define(DEFAULT_RECONNECT_MAX, 120000).
  15. -define(DEFAULT_RECONNECT_MIN, 500).
  16. -define(DEFAULT_TIMEOUT, 5000).
  17. -define(DEFAULT_BODY, undefined).
  18. -define(DEFAULT_HEADERS, []).
  19. -define(DEFAULT_PID, self()).
  20. -define(DEFAULT_PROTOCOL, tcp).
  21. -define(DEFAULT_PORTO(Protocol), 8529).
  22. %%-define(DEFAULT_PORTO(Protocol), case Protocol of tcp -> 80; _ -> 443 end).
  23. -define(DEFAULT_SOCKET_OPTS, [binary, {active, true}, {delay_send, true}, {nodelay, true}, {keepalive, true}, {recbuf, 1048576}, {send_timeout, 5000}, {send_timeout_close, true}]).
  24. -define(GET_FROM_LIST(Key, List), agMiscUtils:getListValue(Key, List, undefined)).
  25. -define(GET_FROM_LIST(Key, List, Default), agMiscUtils:getListValue(Key, List, Default)).
  26. -define(WARN(Tag, Format, Data), agMiscUtils:warnMsg(Tag, Format, Data)).
  27. -define(miDoNetConnect, miDoNetConnect).
  28. -record(miAgHttpCliRet, {
  29. requestId :: requestId(),
  30. reply :: term()
  31. }).
  32. -record(request, {
  33. requestId :: requestId(),
  34. pid :: pid() | undefined,
  35. timeout :: timeout(),
  36. timestamp :: erlang:timestamp()
  37. }).
  38. -record(requestRet, {
  39. statusCode :: undefined | 100..505,
  40. contentLength :: undefined | non_neg_integer() | chunked,
  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. reason :: undefined | binary(),
  48. headers :: undefined | [binary()],
  49. buffer = <<>> :: binary(),
  50. body = <<>> :: binary()
  51. }).
  52. -record(httpParam, {
  53. headers = [] :: [binary()],
  54. body = undefined :: undefined | binary(),
  55. pid = self() :: pid(),
  56. timeout = 1000 :: non_neg_integer()
  57. }).
  58. -record(reconnectState, {
  59. min :: non_neg_integer(),
  60. max :: non_neg_integer() | infinity,
  61. current :: non_neg_integer() | undefined
  62. }).
  63. -record(cliState, {
  64. requestsIn = 1 :: non_neg_integer(),
  65. requestsOut = 0 :: non_neg_integer(),
  66. status = leisure :: waiting | leisure,
  67. backlogNum = 0 :: integer(),
  68. backlogSize = 0 :: integer(),
  69. curInfo = undefined :: tuple(),
  70. recvState :: recvState() | undefined
  71. }).
  72. -record(poolOpts, {
  73. host :: host(),
  74. port :: 0..65535,
  75. hostname :: string(),
  76. protocol :: protocol(),
  77. poolSize ::binary(),
  78. userPassword :: binary()
  79. }).
  80. -record(binPatterns, {
  81. rn :: binary:cp(),
  82. rnrn :: binary:cp()
  83. }).
  84. -type binPatterns() :: #binPatterns {}.
  85. -type miAgHttpCliRet() :: #miAgHttpCliRet{}.
  86. -type request() :: #request{}.
  87. -type requestRet() :: #requestRet{}.
  88. -type recvState() :: #recvState{}.
  89. -type httpParam() :: #httpParam{}.
  90. -type cliState() :: #cliState{}.
  91. -type reconnectState() :: #reconnectState{}.
  92. -type poolName() :: atom().
  93. -type serverName() :: atom().
  94. -type protocol() :: ssl | tcp.
  95. -type method() :: binary().
  96. -type headers() :: [{iodata(), iodata()}].
  97. -type body() :: iodata() | undefined.
  98. -type path() :: binary().
  99. -type host() :: binary().
  100. -type poolSize() :: pos_integer().
  101. -type backlogSize() :: pos_integer() | infinity.
  102. -type requestId() :: {serverName(), reference()}.
  103. -type externalRequestId() :: term().
  104. -type response() :: {externalRequestId(), term()}.
  105. -type socket() :: inet:socket() | ssl:sslsocket().
  106. -type error() :: {error, term()}.
  107. -type poolCfg() ::
  108. {baseUrl, binary()} |
  109. {user, binary()} |
  110. {password, binary()} |
  111. {poolSize, poolSize()}.
  112. -type agencyOpt() ::
  113. {reconnect, boolean()} |
  114. {backlogSize, backlogSize()} |
  115. {reconnectTimeMin, pos_integer()} |
  116. {reconnectTimeMax, pos_integer()} |
  117. {socketOpts, [gen_tcp:connect_option(), ...]}.
  118. -type poolCfgs() :: [poolCfg()].
  119. -type poolOpts() :: #poolOpts{}.
  120. -type agencyOpts() :: [agencyOpt()].
  121. -record(dbUrl, {
  122. host :: host(),
  123. path :: path(),
  124. port :: 0..65535,
  125. hostname :: string(),
  126. protocol :: protocol(),
  127. poolName :: atom() %% 请求该URL用到的poolName
  128. }).
  129. -type dbUrl() :: #dbUrl{}.