@@ -107,7 +107,7 @@ namespace web { namespace http { namespace client { namespace details
107
107
utility::string_t value = header_line.substr (colonIndex + 1 , header_line.length () - colonIndex - 1 );
108
108
http::details::trim_whitespace (key);
109
109
http::details::trim_whitespace (value);
110
- headers[ key] = value;
110
+ headers. add ( key, value) ;
111
111
}
112
112
line = wcstok_s (nullptr , CRLF, &context);
113
113
}
@@ -145,20 +145,8 @@ namespace web { namespace http { namespace client { namespace details
145
145
m_response._get_impl ()->_complete (body_size);
146
146
147
147
finish ();
148
-
149
- delete this ;
150
- }
151
-
152
- #ifdef _MS_WINDOWS
153
- // Helper function to report an error, set task completion event, and close the request handle.
154
-
155
- void report_error (const utility::string_t & errorMessage)
156
- {
157
- report_exception (http_exception (errorMessage));
158
148
}
159
149
160
- #endif
161
-
162
150
void report_error (unsigned long error_code, const utility::string_t & errorMessage)
163
151
{
164
152
m_response.set_error_code (error_code);
@@ -193,8 +181,6 @@ namespace web { namespace http { namespace client { namespace details
193
181
}
194
182
195
183
finish ();
196
-
197
- delete this ;
198
184
}
199
185
200
186
concurrency::streams::streambuf<uint8_t > _get_readbuffer ()
@@ -257,7 +243,7 @@ namespace web { namespace http { namespace client { namespace details
257
243
responseImpl->_prepare_to_receive_data ();
258
244
}
259
245
260
- void finish ();
246
+ virtual void finish ();
261
247
};
262
248
263
249
//
@@ -272,7 +258,7 @@ namespace web { namespace http { namespace client { namespace details
272
258
virtual ~_http_client_communicator () {}
273
259
274
260
// Asychronously send a HTTP request and process the response.
275
- void async_send_request (request_context * request)
261
+ void async_send_request (std::shared_ptr< request_context> request)
276
262
{
277
263
if (m_client_config.guarantee_order ())
278
264
{
@@ -297,7 +283,7 @@ namespace web { namespace http { namespace client { namespace details
297
283
298
284
if ( !m_requests_queue.empty ())
299
285
{
300
- request_context * request = m_requests_queue.front ();
286
+ auto request = m_requests_queue.front ();
301
287
m_requests_queue.pop ();
302
288
303
289
// Schedule a task to start sending.
@@ -323,7 +309,7 @@ namespace web { namespace http { namespace client { namespace details
323
309
virtual unsigned long open () = 0;
324
310
325
311
// HTTP client implementations must implement send_request.
326
- virtual void send_request (_In_ request_context * request) = 0;
312
+ virtual void send_request (_In_ std::shared_ptr< request_context> request) = 0;
327
313
328
314
// URI to connect to.
329
315
const http::uri m_uri;
@@ -337,10 +323,11 @@ namespace web { namespace http { namespace client { namespace details
337
323
pplx::extensibility::critical_section_t m_open_lock;
338
324
339
325
// Wraps opening the client around sending a request.
340
- void open_and_send_request (request_context * request)
326
+ void open_and_send_request (std::shared_ptr< request_context> request)
341
327
{
342
328
// First see if client needs to be opened.
343
329
auto error = open_if_required ();
330
+
344
331
if (error != S_OK)
345
332
{
346
333
// Failed to open
@@ -367,6 +354,7 @@ namespace web { namespace http { namespace client { namespace details
367
354
if ( !m_opened )
368
355
{
369
356
error = open ();
357
+
370
358
if (error == S_OK)
371
359
{
372
360
m_opened = true ;
@@ -377,7 +365,7 @@ namespace web { namespace http { namespace client { namespace details
377
365
return error;
378
366
}
379
367
380
- void push_request (_In_opt_ request_context * request)
368
+ void push_request (_In_opt_ std::shared_ptr< request_context> request)
381
369
{
382
370
if (request == nullptr ) return ;
383
371
@@ -398,7 +386,7 @@ namespace web { namespace http { namespace client { namespace details
398
386
}
399
387
400
388
// Queue used to guarantee ordering of requests, when appliable.
401
- std::queue<request_context * > m_requests_queue;
389
+ std::queue<std::shared_ptr< request_context> > m_requests_queue;
402
390
int m_scheduled;
403
391
};
404
392
0 commit comments