hikyuu 2.1.0__cp39-none-win_amd64.whl → 2.1.1__cp39-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. hikyuu/cpp/boost_date_time-mt.dll +0 -0
  2. hikyuu/cpp/boost_serialization-mt.dll +0 -0
  3. hikyuu/cpp/boost_wserialization-mt.dll +0 -0
  4. hikyuu/cpp/core39.pyd +0 -0
  5. hikyuu/cpp/hikyuu.dll +0 -0
  6. hikyuu/extend.py +3 -1
  7. hikyuu/gui/HikyuuTDX.py +11 -6
  8. hikyuu/include/hikyuu/DataType.h +2 -1
  9. hikyuu/include/hikyuu/KRecord.h +1 -1
  10. hikyuu/include/hikyuu/StockManager.h +3 -0
  11. hikyuu/include/hikyuu/analysis/combinate.h +1 -1
  12. hikyuu/include/hikyuu/config.h +0 -12
  13. hikyuu/include/hikyuu/strategy/AccountTradeManager.h +3 -1
  14. hikyuu/include/hikyuu/utilities/FilterNode.h +267 -0
  15. hikyuu/include/hikyuu/utilities/LRUCache11.h +230 -0
  16. hikyuu/include/hikyuu/{Log.h → utilities/Log.h} +91 -113
  17. hikyuu/include/hikyuu/utilities/Null.h +1 -0
  18. hikyuu/include/hikyuu/utilities/Parameter.h +2 -1
  19. hikyuu/include/hikyuu/utilities/ResourcePool.h +636 -0
  20. hikyuu/include/hikyuu/utilities/SpendTimer.h +10 -9
  21. hikyuu/include/hikyuu/utilities/TimerManager.h +2 -2
  22. hikyuu/include/hikyuu/utilities/any_to_string.h +142 -0
  23. hikyuu/include/hikyuu/utilities/arithmetic.h +69 -33
  24. hikyuu/include/hikyuu/utilities/base64.h +59 -0
  25. hikyuu/include/hikyuu/utilities/config.h +41 -0
  26. hikyuu/include/hikyuu/utilities/datetime/Datetime.h +41 -31
  27. hikyuu/include/hikyuu/utilities/datetime/TimeDelta.h +24 -13
  28. hikyuu/include/hikyuu/utilities/db_connect/DBCondition.h +48 -48
  29. hikyuu/include/hikyuu/utilities/db_connect/DBConnect.h +10 -0
  30. hikyuu/include/hikyuu/utilities/db_connect/DBConnectBase.h +5 -22
  31. hikyuu/include/hikyuu/utilities/db_connect/DBUpgrade.h +3 -3
  32. hikyuu/include/hikyuu/utilities/db_connect/SQLException.h +1 -1
  33. hikyuu/include/hikyuu/utilities/db_connect/SQLResultSet.h +1 -1
  34. hikyuu/include/hikyuu/utilities/db_connect/SQLStatementBase.h +7 -7
  35. hikyuu/include/hikyuu/utilities/db_connect/TableMacro.h +1 -2
  36. hikyuu/include/hikyuu/utilities/db_connect/mysql/MySQLConnect.h +9 -9
  37. hikyuu/include/hikyuu/utilities/db_connect/mysql/MySQLStatement.h +18 -18
  38. hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteConnect.h +3 -3
  39. hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteStatement.h +2 -2
  40. hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteUtil.h +6 -6
  41. hikyuu/include/hikyuu/{exception.h → utilities/exception.h} +1 -0
  42. hikyuu/include/hikyuu/utilities/http_client/HttpClient.h +229 -0
  43. hikyuu/include/hikyuu/utilities/http_client/nng_wrap.h +517 -0
  44. hikyuu/include/hikyuu/utilities/http_client/url.h +25 -0
  45. hikyuu/include/hikyuu/utilities/{IniParser.h → ini_parser/IniParser.h} +10 -5
  46. hikyuu/include/hikyuu/utilities/ini_parser/__init__.py +1 -0
  47. hikyuu/include/hikyuu/utilities/md5.h +41 -0
  48. hikyuu/include/hikyuu/utilities/mo/__init__.py +1 -0
  49. hikyuu/include/hikyuu/utilities/mo/mo.h +48 -0
  50. hikyuu/include/hikyuu/utilities/mo/moFileReader.h +836 -0
  51. hikyuu/include/hikyuu/{global → utilities}/node/NodeClient.h +25 -18
  52. hikyuu/include/hikyuu/{global → utilities}/node/NodeError.h +1 -1
  53. hikyuu/include/hikyuu/{global → utilities}/node/NodeMessage.h +3 -2
  54. hikyuu/include/hikyuu/utilities/node/NodeServer.h +246 -0
  55. hikyuu/include/hikyuu/utilities/node/__init__.py +1 -0
  56. hikyuu/include/hikyuu/utilities/os.h +16 -15
  57. hikyuu/include/hikyuu/utilities/snowflake.h +110 -0
  58. hikyuu/include/hikyuu/utilities/string_view.h +70 -0
  59. hikyuu/include/hikyuu/utilities/thread/MQStealThreadPool.h +3 -3
  60. hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +3 -3
  61. hikyuu/include/hikyuu/utilities/thread/StealThreadPool.h +3 -3
  62. hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +3 -3
  63. hikyuu/include/hikyuu/version.h +4 -4
  64. hikyuu/sqlite3.dll +0 -0
  65. hikyuu/vcruntime140.dll +0 -0
  66. hikyuu/vcruntime140_1.dll +0 -0
  67. hikyuu-2.1.1.dist-info/METADATA +115 -0
  68. {hikyuu-2.1.0.dist-info → hikyuu-2.1.1.dist-info}/RECORD +73 -53
  69. {hikyuu-2.1.0.dist-info → hikyuu-2.1.1.dist-info}/top_level.txt +4 -1
  70. hikyuu/README.rst +0 -79
  71. hikyuu-2.1.0.dist-info/METADATA +0 -126
  72. /hikyuu/include/hikyuu/{global/node → utilities/http_client}/__init__.py +0 -0
  73. {hikyuu-2.1.0.dist-info → hikyuu-2.1.1.dist-info}/LICENSE +0 -0
  74. {hikyuu-2.1.0.dist-info → hikyuu-2.1.1.dist-info}/WHEEL +0 -0
  75. {hikyuu-2.1.0.dist-info → hikyuu-2.1.1.dist-info}/entry_points.txt +0 -0
@@ -22,20 +22,20 @@
22
22
 
23
23
  namespace hku {
24
24
 
25
- class HKU_API MySQLConnect : public DBConnectBase {
25
+ class HKU_UTILS_API MySQLConnect : public DBConnectBase {
26
26
  public:
27
- explicit MySQLConnect(const Parameter& param);
27
+ explicit MySQLConnect(const Parameter &param);
28
28
  virtual ~MySQLConnect();
29
29
 
30
- MySQLConnect(const MySQLConnect&) = delete;
31
- MySQLConnect& operator=(const MySQLConnect&) = delete;
30
+ MySQLConnect(const MySQLConnect &) = delete;
31
+ MySQLConnect &operator=(const MySQLConnect &) = delete;
32
32
 
33
33
  virtual bool ping() override;
34
34
 
35
- virtual int64_t exec(const std::string& sql_string) override;
36
- virtual SQLStatementPtr getStatement(const std::string& sql_statement) override;
37
- virtual bool tableExist(const std::string& tablename) override;
38
- virtual void resetAutoIncrement(const std::string& tablename) override;
35
+ virtual int64_t exec(const std::string &sql_string) override;
36
+ virtual SQLStatementPtr getStatement(const std::string &sql_statement) override;
37
+ virtual bool tableExist(const std::string &tablename) override;
38
+ virtual void resetAutoIncrement(const std::string &tablename) override;
39
39
 
40
40
  virtual void transaction() noexcept override;
41
41
  virtual void commit() noexcept override;
@@ -48,7 +48,7 @@ private:
48
48
 
49
49
  private:
50
50
  friend class MySQLStatement;
51
- MYSQL* m_mysql;
51
+ MYSQL *m_mysql;
52
52
  };
53
53
 
54
54
  } // namespace hku
@@ -26,16 +26,16 @@
26
26
  typedef bool my_bool;
27
27
  #endif
28
28
 
29
- #ifndef HKU_API
30
- #define HKU_API
29
+ #ifndef HKU_UTILS_API
30
+ #define HKU_UTILS_API
31
31
  #endif
32
32
 
33
33
  namespace hku {
34
34
 
35
- class HKU_API MySQLStatement : public SQLStatementBase {
35
+ class HKU_UTILS_API MySQLStatement : public SQLStatementBase {
36
36
  public:
37
37
  MySQLStatement() = delete;
38
- MySQLStatement(DBConnectBase* driver, const std::string& sql_statement);
38
+ MySQLStatement(DBConnectBase *driver, const std::string &sql_statement);
39
39
  virtual ~MySQLStatement();
40
40
 
41
41
  virtual void sub_exec() override;
@@ -45,28 +45,28 @@ public:
45
45
  virtual void sub_bindNull(int idx) override;
46
46
  virtual void sub_bindInt(int idx, int64_t value) override;
47
47
  virtual void sub_bindDouble(int idx, double item) override;
48
- virtual void sub_bindDatetime(int idx, const Datetime& item) override;
49
- virtual void sub_bindText(int idx, const std::string& item) override;
50
- virtual void sub_bindText(int idx, const char* item, size_t len) override;
51
- virtual void sub_bindBlob(int idx, const std::string& item) override;
52
- virtual void sub_bindBlob(int idx, const std::vector<char>& item) override;
48
+ virtual void sub_bindDatetime(int idx, const Datetime &item) override;
49
+ virtual void sub_bindText(int idx, const std::string &item) override;
50
+ virtual void sub_bindText(int idx, const char *item, size_t len) override;
51
+ virtual void sub_bindBlob(int idx, const std::string &item) override;
52
+ virtual void sub_bindBlob(int idx, const std::vector<char> &item) override;
53
53
 
54
54
  virtual int sub_getNumColumns() const override;
55
- virtual void sub_getColumnAsInt64(int idx, int64_t& item) override;
56
- virtual void sub_getColumnAsDouble(int idx, double& item) override;
57
- virtual void sub_getColumnAsDatetime(int idx, Datetime& item) override;
58
- virtual void sub_getColumnAsText(int idx, std::string& item) override;
59
- virtual void sub_getColumnAsBlob(int idx, std::string& item) override;
60
- virtual void sub_getColumnAsBlob(int idx, std::vector<char>& item) override;
55
+ virtual void sub_getColumnAsInt64(int idx, int64_t &item) override;
56
+ virtual void sub_getColumnAsDouble(int idx, double &item) override;
57
+ virtual void sub_getColumnAsDatetime(int idx, Datetime &item) override;
58
+ virtual void sub_getColumnAsText(int idx, std::string &item) override;
59
+ virtual void sub_getColumnAsBlob(int idx, std::string &item) override;
60
+ virtual void sub_getColumnAsBlob(int idx, std::vector<char> &item) override;
61
61
 
62
62
  private:
63
63
  void _reset();
64
64
  void _bindResult();
65
65
 
66
66
  private:
67
- MYSQL* m_db;
68
- MYSQL_STMT* m_stmt;
69
- MYSQL_RES* m_meta_result;
67
+ MYSQL *m_db;
68
+ MYSQL_STMT *m_stmt;
69
+ MYSQL_RES *m_meta_result;
70
70
  bool m_needs_reset;
71
71
  bool m_has_bind_result;
72
72
  std::vector<MYSQL_BIND> m_param_bind;
@@ -25,7 +25,7 @@ namespace hku {
25
25
  * SQLite连接
26
26
  * @ingroup SQLite
27
27
  */
28
- class HKU_API SQLiteConnect : public DBConnectBase {
28
+ class HKU_UTILS_API SQLiteConnect : public DBConnectBase {
29
29
  public:
30
30
  /**
31
31
  * 构造函数
@@ -78,11 +78,11 @@ private:
78
78
 
79
79
  private:
80
80
  friend class SQLiteStatement;
81
- string m_dbname;
81
+ std::string m_dbname;
82
82
  sqlite3 *m_db;
83
83
  };
84
84
 
85
- typedef shared_ptr<SQLiteConnect> SQLiteConnectPtr;
85
+ typedef std::shared_ptr<SQLiteConnect> SQLiteConnectPtr;
86
86
 
87
87
  } // namespace hku
88
88
 
@@ -19,7 +19,7 @@ namespace hku {
19
19
  * SQLite Statemen
20
20
  * @ingroup DBConnect
21
21
  */
22
- class HKU_API SQLiteStatement : public SQLStatementBase {
22
+ class HKU_UTILS_API SQLiteStatement : public SQLStatementBase {
23
23
  public:
24
24
  SQLiteStatement() = delete;
25
25
 
@@ -28,7 +28,7 @@ public:
28
28
  * @param driver 数据库连接
29
29
  * @param sql_statement SQL语句
30
30
  */
31
- SQLiteStatement(DBConnectBase *driver, const string &sql_statement);
31
+ SQLiteStatement(DBConnectBase *driver, const std::string &sql_statement);
32
32
 
33
33
  /** 析构函数 */
34
34
  virtual ~SQLiteStatement();
@@ -15,7 +15,7 @@ namespace hku {
15
15
  * @brief SQLite 其他相关操作方法集合
16
16
  * @ingroup DBConnect
17
17
  */
18
- class HKU_API SQLiteUtil {
18
+ class HKU_UTILS_API SQLiteUtil {
19
19
  public:
20
20
  SQLiteUtil() = default;
21
21
  ~SQLiteUtil() = default;
@@ -43,8 +43,8 @@ public:
43
43
  * @param n_page 分批备份时每次循环备份的 page 数,小于等于0时,一次性备份,不进行分批备份
44
44
  * @param step_sleep 分批备份时每次循环后,休眠间隔时长(毫秒),以便让出cpu
45
45
  */
46
- static BackupResult onlineBackup(const std::shared_ptr<SQLiteConnect>& conn,
47
- const std::string& dst, int n_page = -1,
46
+ static BackupResult onlineBackup(const std::shared_ptr<SQLiteConnect> &conn,
47
+ const std::string &dst, int n_page = -1,
48
48
  int step_sleep = 250) noexcept;
49
49
  /**
50
50
  * @brief 在线备份数据库,不影响其他数据库连接进行操作
@@ -53,7 +53,7 @@ public:
53
53
  * @param n_page 分批备份时每次循环备份的 page 数,小于等于0时,一次性备份,不进行分批备份
54
54
  * @param step_sleep 分批备份时每次循环后,休眠间隔时长(毫秒),以便让出cpu
55
55
  */
56
- static BackupResult onlineBackup(const std::string& src, const std::string& dst,
56
+ static BackupResult onlineBackup(const std::string &src, const std::string &dst,
57
57
  int n_page = -1, int step_sleep = 250) noexcept;
58
58
 
59
59
  /**
@@ -65,7 +65,7 @@ public:
65
65
  * @param save_bad 是否保存损坏的数据,将 dst 及 dst-journal 加上后缀 .bad 另存
66
66
  * @return RecoverResult
67
67
  */
68
- static RecoverResult recoverFromBackup(const std::string& backup, const std::string& dst,
68
+ static RecoverResult recoverFromBackup(const std::string &backup, const std::string &dst,
69
69
  bool save_bad = false) noexcept;
70
70
 
71
71
  /**
@@ -74,7 +74,7 @@ public:
74
74
  * @return true 指定的数据库文件及其日志文件都被成功删除或都不存在时,返回成功
75
75
  * @return false 指定的数据文件及其日志文件,其中一个删除失败都会返回删除失败
76
76
  */
77
- static bool removeDBFile(const std::string& dbfilename);
77
+ static bool removeDBFile(const std::string &dbfilename);
78
78
  };
79
79
 
80
80
  } // namespace hku
@@ -29,6 +29,7 @@ public:
29
29
  exception(const std::string& msg) // cppcheck-suppress noExplicitConstructor
30
30
  : std::exception(msg.c_str()) {}
31
31
  exception(const char* msg) : std::exception(msg) {} // cppcheck-suppress noExplicitConstructor
32
+ virtual ~exception() noexcept {};
32
33
  };
33
34
 
34
35
  #else
@@ -0,0 +1,229 @@
1
+ /*
2
+ * Copyright (c) 2024 hikyuu.org
3
+ *
4
+ * Created on: 2024-07-26
5
+ * Author: fasiondog
6
+ */
7
+
8
+ #pragma once
9
+ #ifndef HKU_UTILS_HTTP_CLIENT_H
10
+ #define HKU_UTILS_HTTP_CLIENT_H
11
+
12
+ #include "hikyuu/utilities/config.h"
13
+ #if !HKU_ENABLE_HTTP_CLIENT
14
+ #error "Don't enable http client, please config with --http_client=y"
15
+ #endif
16
+
17
+ #include <string>
18
+ #include <nlohmann/json.hpp>
19
+ #include "nng_wrap.h"
20
+
21
+ #ifndef HKU_UTILS_API
22
+ #define HKU_UTILS_API
23
+ #endif
24
+
25
+ namespace hku {
26
+
27
+ using json = nlohmann::json;
28
+
29
+ class HKU_UTILS_API HttpClient;
30
+
31
+ class HKU_UTILS_API HttpResponse final {
32
+ friend class HKU_UTILS_API HttpClient;
33
+
34
+ public:
35
+ HttpResponse();
36
+ ~HttpResponse();
37
+
38
+ HttpResponse(const HttpResponse&) = delete;
39
+ HttpResponse& operator=(const HttpResponse&) = delete;
40
+
41
+ HttpResponse(HttpResponse&& rhs);
42
+ HttpResponse& operator=(HttpResponse&& rhs);
43
+
44
+ const std::string& body() const noexcept {
45
+ return m_body;
46
+ }
47
+
48
+ hku::json json() const {
49
+ return json::parse(m_body);
50
+ }
51
+
52
+ int status() const noexcept {
53
+ return nng_http_res_get_status(m_res);
54
+ }
55
+
56
+ std::string reason() noexcept {
57
+ return nng_http_res_get_reason(m_res);
58
+ }
59
+
60
+ std::string getHeader(const std::string& key) noexcept {
61
+ const char* hdr = nng_http_res_get_header(m_res, key.c_str());
62
+ return hdr ? std::string(hdr) : std::string();
63
+ }
64
+
65
+ size_t getContentLength() noexcept {
66
+ std::string slen = getHeader("Content-Length");
67
+ return slen.empty() ? 0 : std::stoi(slen);
68
+ }
69
+
70
+ private:
71
+ void _resizeBody(size_t len) {
72
+ m_body.resize(len);
73
+ }
74
+
75
+ nng_http_res* get() const noexcept {
76
+ return m_res;
77
+ }
78
+
79
+ void reset();
80
+
81
+ private:
82
+ nng_http_res* m_res{nullptr};
83
+ std::string m_body;
84
+ };
85
+
86
+ class HKU_UTILS_API HttpClient {
87
+ public:
88
+ HttpClient() = default;
89
+ explicit HttpClient(const std::string& url, int32_t timeout_ms = NNG_DURATION_DEFAULT)
90
+ : m_url(nng::url(url)), m_timeout_ms(timeout_ms) {};
91
+ virtual ~HttpClient();
92
+
93
+ HttpClient(const HttpClient&) = delete;
94
+ HttpClient& operator=(const HttpClient&) = delete;
95
+
96
+ HttpClient(HttpClient&& rhs)
97
+ : m_default_headers(std::move(rhs.m_default_headers)),
98
+ m_url(std::move(rhs.m_url)),
99
+ m_client(std::move(rhs.m_client)),
100
+ m_aio(std::move(rhs.m_aio)),
101
+ m_conn(std::move(rhs.m_conn)),
102
+ #if HKU_ENABLE_HTTP_CLIENT_SSL
103
+ m_tls_cfg(std::move(rhs.m_tls_cfg)),
104
+ m_ca_file(std::move(rhs.m_ca_file)),
105
+ #endif
106
+ m_timeout_ms(rhs.m_timeout_ms) {
107
+ }
108
+
109
+ HttpClient& operator=(HttpClient&& rhs) {
110
+ if (this != &rhs) {
111
+ m_default_headers = std::move(rhs.m_default_headers);
112
+ m_url = std::move(rhs.m_url);
113
+ m_client = (std::move(rhs.m_client));
114
+ m_aio = std::move(rhs.m_aio);
115
+ m_conn = std::move(rhs.m_conn);
116
+ #if HKU_ENABLE_HTTP_CLIENT_SSL
117
+ m_tls_cfg = std::move(rhs.m_tls_cfg);
118
+ m_ca_file = std::move(rhs.m_ca_file);
119
+ #endif
120
+ m_timeout_ms = rhs.m_timeout_ms;
121
+ rhs.m_timeout_ms = NNG_DURATION_DEFAULT;
122
+ }
123
+ return *this;
124
+ }
125
+
126
+ bool valid() const noexcept {
127
+ return m_url.valid();
128
+ }
129
+
130
+ const std::string& url() const noexcept {
131
+ return m_url.raw_url();
132
+ }
133
+
134
+ void setUrl(const std::string& url) noexcept {
135
+ m_url = std::move(nng::url(url));
136
+ reset();
137
+ }
138
+
139
+ // #define NNG_DURATION_INFINITE (-1)
140
+ // #define NNG_DURATION_DEFAULT (-2)
141
+ // #define NNG_DURATION_ZERO (0)
142
+ void setTimeout(int32_t ms) {
143
+ if (m_timeout_ms != ms) {
144
+ m_timeout_ms = ms;
145
+ reset();
146
+ }
147
+ }
148
+
149
+ void setDefaultHeaders(const HttpHeaders& headers) {
150
+ m_default_headers = headers;
151
+ }
152
+
153
+ void setDefaultHeaders(HttpHeaders&& headers) {
154
+ m_default_headers = std::move(headers);
155
+ }
156
+
157
+ void setCaFile(const std::string& filename);
158
+
159
+ void reset();
160
+
161
+ HttpResponse request(const std::string& method, const std::string& path,
162
+ const HttpParams& params, const HttpHeaders& headers, const char* body,
163
+ size_t body_len, const std::string& content_type);
164
+
165
+ HttpResponse get(const std::string& path, const HttpHeaders& headers = HttpHeaders()) {
166
+ return request("GET", path, HttpParams(), headers, nullptr, 0, "");
167
+ }
168
+
169
+ HttpResponse get(const std::string& path, const HttpParams& params,
170
+ const HttpHeaders& headers) {
171
+ return request("GET", path, params, headers, nullptr, 0, "");
172
+ }
173
+
174
+ HttpResponse post(const std::string& path, const HttpParams& params, const HttpHeaders& headers,
175
+ const char* body, size_t len, const std::string& content_type) {
176
+ return request("POST", path, params, headers, body, len, content_type);
177
+ }
178
+
179
+ HttpResponse post(const std::string& path, const HttpHeaders& headers, const char* body,
180
+ size_t len, const std::string& content_type) {
181
+ return request("POST", path, HttpParams(), headers, body, len, content_type);
182
+ }
183
+
184
+ HttpResponse post(const std::string& path, const HttpParams& params, const HttpHeaders& headers,
185
+ const std::string& content, const std::string& content_type = "text/plaint") {
186
+ return post(path, params, headers, content.data(), content.size(), content_type);
187
+ }
188
+
189
+ HttpResponse post(const std::string& path, const HttpHeaders& headers,
190
+ const std::string& content, const std::string& content_type = "text/plaint") {
191
+ return post(path, HttpParams(), headers, content, content_type);
192
+ }
193
+
194
+ HttpResponse post(const std::string& path, const HttpParams& params, const HttpHeaders& headers,
195
+ const json& body) {
196
+ return post(path, params, headers, body.dump(), "application/json");
197
+ }
198
+
199
+ HttpResponse post(const std::string& path, const HttpHeaders& headers, const json& body) {
200
+ return post(path, HttpParams(), headers, body);
201
+ }
202
+
203
+ HttpResponse post(const std::string& path, const json& body) {
204
+ return post(path, HttpHeaders(), body);
205
+ }
206
+
207
+ private:
208
+ void _connect();
209
+ HttpResponse _readResChunk(const std::string& method, const std::string& uri,
210
+ const HttpHeaders& headers, const char* body, size_t body_len,
211
+ const std::string& content_type);
212
+
213
+ private:
214
+ HttpHeaders m_default_headers;
215
+ nng::url m_url;
216
+ nng::http_client m_client;
217
+ nng::aio m_aio;
218
+ nng::http_conn m_conn;
219
+ #if HKU_ENABLE_HTTP_CLIENT_SSL
220
+ nng::tls_config m_tls_cfg;
221
+ std::string m_ca_file;
222
+ #endif
223
+
224
+ int32_t m_timeout_ms{NNG_DURATION_DEFAULT};
225
+ };
226
+
227
+ } // namespace hku
228
+
229
+ #endif