@@ -30,7 +30,6 @@ namespace {
30
30
31
31
inline http_request request_from (
32
32
uri const & uri_with_db,
33
- std::shared_ptr<fmt::MemoryWriter> lines,
34
33
std::string const & username,
35
34
std::string const & password,
36
35
bool deflate,
@@ -63,16 +62,6 @@ namespace {
63
62
)
64
63
;
65
64
}
66
-
67
- if (lines->size () > 0 && deflate) {
68
- std::vector<uint8_t > buffer;
69
- influxdb::utility::compress (lines, buffer);
70
- request.headers ().add (header_names::content_encoding, algorithm::GZIP);
71
- request.set_body (concurrency::streams::rawptr_stream<uint8_t >::open_istream (
72
- buffer.data (), buffer.size ()));
73
- } else {
74
- request.set_body (lines->str ());
75
- }
76
65
77
66
return request;
78
67
}
@@ -94,11 +83,10 @@ void influxdb::raw::db::post(string_t const & query)
94
83
95
84
builder.append_query (U (" q" ), query);
96
85
97
- auto w = std::make_shared<fmt::MemoryWriter>();
98
86
// synchronous for now
99
- auto response = client. request (
100
- request_from (builder. to_string (), w, username, password, deflate, retention_policy)
101
- );
87
+ auto request = request_from (builder. to_string (), username, password, deflate, retention_policy);
88
+ request. set_body ( " " );
89
+ auto response = client. request (request );
102
90
103
91
try {
104
92
response.wait ();
@@ -115,12 +103,11 @@ string_t influxdb::raw::db::get(string_t const & query)
115
103
uri_builder builder (U (" /query" ));
116
104
117
105
builder.append_query (U (" q" ), query);
118
- auto w = std::make_shared<fmt::MemoryWriter>();
119
106
107
+ auto request = request_from (builder.to_string (), username, password, deflate, retention_policy);
108
+ request.set_body (" " );
120
109
// synchronous for now
121
- auto response = client.request (
122
- request_from (builder.to_string (), w, username, password, deflate, retention_policy)
123
- );
110
+ auto response = client.request (request);
124
111
125
112
try {
126
113
response.wait ();
@@ -140,7 +127,17 @@ string_t influxdb::raw::db::get(string_t const & query)
140
127
141
128
void influxdb::raw::db::insert (std::shared_ptr<fmt::MemoryWriter> lines)
142
129
{
143
- auto response = client.request (request_from (uri_with_db, lines, username, password, deflate, retention_policy));
130
+ auto request = request_from (uri_with_db, username, password, deflate, retention_policy);
131
+ std::vector<uint8_t > buffer; // needs to live until sending the request
132
+ if (lines->size () > 0 && deflate) {
133
+ int size = influxdb::utility::compress (lines, buffer);
134
+ request.headers ().add (header_names::content_encoding, algorithm::GZIP);
135
+ request.set_body (concurrency::streams::rawptr_stream<uint8_t >::open_istream (
136
+ buffer.data (), size));
137
+ } else {
138
+ request.set_body (lines->str ());
139
+ }
140
+ auto response = client.request (request);
144
141
145
142
try {
146
143
response.wait ();
0 commit comments