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.

126 wiersze
3.8 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
  1. %% beam cache 模块名
  2. -define(agBeamPool, agBeamPool).
  3. -define(agBeamAgency, agBeamAgency).
  4. %% 默认值定义
  5. -define(DEFAULT_BACKLOG_SIZE, 1024).
  6. -define(DEFAULT_INIT_OPTS, undefined).
  7. -define(DEFAULT_CONNECT_TIMEOUT, 500).
  8. -define(DEFAULT_IP, <<"127.0.0.1">>).
  9. -define(DEFAULT_POOL_SIZE, 16).
  10. -define(DEFAULT_POOL_STRATEGY, random).
  11. -define(DEFAULT_POOL_OPTIONS, []).
  12. -define(DEFAULT_IS_RECONNECT, true).
  13. -define(DEFAULT_RECONNECT_MAX, 120000).
  14. -define(DEFAULT_RECONNECT_MIN, 500).
  15. -define(DEFAULT_SOCKET_OPTS, []).
  16. -define(DEFAULT_TIMEOUT, 1000).
  17. -define(DEFAULT_BODY, undefined).
  18. -define(DEFAULT_HEADERS, []).
  19. -define(DEFAULT_PID, self()).
  20. -define(DEFAULT_PROTOCOL, tcp).
  21. -define(DEFAULT_PORTO(Protocol), case Protocol of tcp -> 80; _ -> 443 end).
  22. -define(GET_FROM_LIST(Key, List), agMiscUtils:getListValue(Key, List, undefined)).
  23. -define(GET_FROM_LIST(Key, List, Default), agMiscUtils:getListValue(Key, List, Default)).
  24. -define(WARN(PoolName, Format, Data), agMiscUtils:warnMsg(PoolName, Format, Data)).
  25. -record(dbUrl, {
  26. host :: host(),
  27. path :: path(),
  28. port :: 0..65535,
  29. hostname :: hostname(),
  30. protocol :: httpType(),
  31. poolName :: atom() %% 请求该URL用到的poolName
  32. }).
  33. -record(requestRet, {
  34. state :: body | done,
  35. body :: undefined | binary(),
  36. content_length :: undefined | non_neg_integer() | chunked,
  37. headers :: undefined | [binary()],
  38. reason :: undefined | binary(),
  39. status_code :: undefined | 100..505
  40. }).
  41. -record(request, {
  42. requestId :: requestId(),
  43. pid :: pid() | undefined,
  44. timeout :: timeout(),
  45. timestamp :: erlang:timestamp()
  46. }).
  47. -record(httpParam, {
  48. headers = [] :: [binary()],
  49. body = undefined :: undefined | binary(),
  50. pid = self() :: pid(),
  51. timeout = 1000 :: non_neg_integer()
  52. }).
  53. -record(poolOpts, {
  54. poolSize :: poolSize(),
  55. backlogSize :: backlogSize(),
  56. poolStrategy :: poolStrategy()
  57. }).
  58. -record(reconnectState, {
  59. min :: time(),
  60. max :: time() | infinity,
  61. current :: time() | undefined
  62. }).
  63. -type requestRet() :: #requestRet {}.
  64. -type dbUrl() :: #dbUrl {}.
  65. -type error() :: {error, term()}.
  66. -type headers() :: [{iodata(), iodata()}, ...].
  67. -type host() :: binary().
  68. -type hostname() :: binary().
  69. -type path() :: binary().
  70. -type method() :: binary().
  71. -type httpType() :: http | https.
  72. -type body() :: iodata() | undefined.
  73. -type options() :: [option(), ...].
  74. -type option() ::
  75. {backlogSize, pos_integer()} |
  76. {poolSize, pos_integer()} |
  77. {poolStrategy, random | round_robin} |
  78. {reconnect, boolean()} |
  79. {reconnectTimeMin, pos_integer()} |
  80. {reconnectTimeMax, pos_integer() | infinity}.
  81. -type httpParam() :: #httpParam{}.
  82. -type backlogSize() :: pos_integer() | infinity.
  83. -type request() :: #request{}.
  84. -type clientOpt() ::
  85. {initOpts, term()} |
  86. {ip, inet:ip_address() | inet:hostname()} |
  87. {port, inet:port_number()} |
  88. {protocol, protocol()} |
  89. {reconnect, boolean()} |
  90. {reconnectTimeMin, time()} |
  91. {reconnectTimeMax, time() | infinity} |
  92. {socketOpts, [gen_tcp:connect_option(), ...]}.
  93. -type clientOpts() :: [clientOpt(), ...].
  94. -type clientState() :: term().
  95. -type externalRequestId() :: term().
  96. -type poolName() :: atom().
  97. -type poolOpt() ::
  98. {poolSize, poolSize()} |
  99. {backlogSize, backlogSize()} |
  100. {poolstrategy, poolStrategy()}.
  101. -type poolOpts() :: [poolOpt()].
  102. -type poolOptsRec() :: #poolOpts{}.
  103. -type poolSize() :: pos_integer().
  104. -type poolStrategy() :: random | round_robin.
  105. -type protocol() :: ssl | tcp.
  106. -type reconnectState() :: #reconnectState{}.
  107. -type requestId() :: {serverName(), reference()}.
  108. -type response() :: {externalRequestId(), term()}.
  109. -type serverName() :: atom().
  110. -type socket() :: inet:socket() | ssl:sslsocket().
  111. -type socketType() :: inet | ssl.
  112. -type time() :: pos_integer().