arangodb erlang数据库驱动
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

169 rindas
4.9 KiB

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