@@ -33,24 +33,28 @@ class CustomEventHandler : public http_client::EventHandler
3333public:
3434 void OnResponse (http_client::Response & /* response */ ) noexcept override
3535 {
36- got_response_ = true ;
36+ got_response_. store ( true , std::memory_order_release) ;
3737 }
3838 void OnEvent (http_client::SessionState state, nostd::string_view /* reason */ ) noexcept override
3939 {
4040 switch (state)
4141 {
4242 case http_client::SessionState::ConnectFailed:
4343 case http_client::SessionState::SendFailed: {
44- is_called_ = true ;
44+ is_called_. store ( true , std::memory_order_release) ;
4545 break ;
4646 }
4747 default :
4848 break ;
4949 }
5050 }
51+
52+ CustomEventHandler () : is_called_(false ), got_response_(false ) {}
53+
5154 ~CustomEventHandler () override = default ;
52- bool is_called_ = false ;
53- bool got_response_ = false ;
55+
56+ std::atomic<bool > is_called_;
57+ std::atomic<bool > got_response_;
5458};
5559
5660class GetEventHandler : public CustomEventHandler
@@ -59,8 +63,8 @@ class GetEventHandler : public CustomEventHandler
5963 {
6064 ASSERT_EQ (200 , response.GetStatusCode ());
6165 ASSERT_EQ (response.GetBody ().size (), 0 );
62- is_called_ = true ;
63- got_response_ = true ;
66+ is_called_. store ( true , std::memory_order_release) ;
67+ got_response_. store ( true , std::memory_order_release) ;
6468 }
6569};
6670
@@ -71,8 +75,8 @@ class PostEventHandler : public CustomEventHandler
7175 ASSERT_EQ (200 , response.GetStatusCode ());
7276 std::string body (response.GetBody ().begin (), response.GetBody ().end ());
7377 ASSERT_EQ (body, " {'k1':'v1', 'k2':'v2', 'k3':'v3'}" );
74- is_called_ = true ;
75- got_response_ = true ;
78+ is_called_. store ( true , std::memory_order_release) ;
79+ got_response_. store ( true , std::memory_order_release) ;
7680 }
7781};
7882
@@ -87,8 +91,8 @@ class FinishInCallbackHandler : public CustomEventHandler
8791 {
8892 ASSERT_EQ (200 , response.GetStatusCode ());
8993 ASSERT_EQ (response.GetBody ().size (), 0 );
90- is_called_ = true ;
91- got_response_ = true ;
94+ is_called_. store ( true , std::memory_order_release) ;
95+ got_response_. store ( true , std::memory_order_release) ;
9296
9397 if (session_)
9498 {
@@ -249,8 +253,8 @@ TEST_F(BasicCurlHttpTests, SendGetRequest)
249253 session->SendRequest (handler);
250254 ASSERT_TRUE (waitForRequests (30 , 1 ));
251255 session->FinishSession ();
252- ASSERT_TRUE (handler->is_called_ );
253- ASSERT_TRUE (handler->got_response_ );
256+ ASSERT_TRUE (handler->is_called_ . load (std::memory_order_acquire) );
257+ ASSERT_TRUE (handler->got_response_ . load (std::memory_order_acquire) );
254258}
255259
256260TEST_F (BasicCurlHttpTests, SendPostRequest)
@@ -272,8 +276,8 @@ TEST_F(BasicCurlHttpTests, SendPostRequest)
272276 session->SendRequest (handler);
273277 ASSERT_TRUE (waitForRequests (30 , 1 ));
274278 session->FinishSession ();
275- ASSERT_TRUE (handler->is_called_ );
276- ASSERT_TRUE (handler->got_response_ );
279+ ASSERT_TRUE (handler->is_called_ . load (std::memory_order_acquire) );
280+ ASSERT_TRUE (handler->got_response_ . load (std::memory_order_acquire) );
277281
278282 session_manager->CancelAllSessions ();
279283 session_manager->FinishAllSessions ();
@@ -291,8 +295,8 @@ TEST_F(BasicCurlHttpTests, RequestTimeout)
291295 auto handler = std::make_shared<GetEventHandler>();
292296 session->SendRequest (handler);
293297 session->FinishSession ();
294- ASSERT_TRUE (handler->is_called_ );
295- ASSERT_FALSE (handler->got_response_ );
298+ ASSERT_TRUE (handler->is_called_ . load (std::memory_order_acquire) );
299+ ASSERT_FALSE (handler->got_response_ . load (std::memory_order_acquire) );
296300}
297301
298302TEST_F (BasicCurlHttpTests, CurlHttpOperations)
@@ -408,8 +412,8 @@ TEST_F(BasicCurlHttpTests, SendGetRequestAsync)
408412 sessions[i]->FinishSession ();
409413 ASSERT_FALSE (sessions[i]->IsSessionActive ());
410414
411- ASSERT_TRUE (handlers[i]->is_called_ );
412- ASSERT_TRUE (handlers[i]->got_response_ );
415+ ASSERT_TRUE (handlers[i]->is_called_ . load (std::memory_order_acquire) );
416+ ASSERT_TRUE (handlers[i]->got_response_ . load (std::memory_order_acquire) );
413417 }
414418
415419 http_client.WaitBackgroundThreadExit ();
@@ -437,16 +441,17 @@ TEST_F(BasicCurlHttpTests, SendGetRequestAsyncTimeout)
437441 // Lock mtx_requests to prevent response, we will check IsSessionActive() in the end
438442 std::unique_lock<std::mutex> lock_requests (mtx_requests);
439443 sessions[i]->SendRequest (handlers[i]);
440- ASSERT_TRUE (sessions[i]->IsSessionActive () || handlers[i]->is_called_ );
444+ ASSERT_TRUE (sessions[i]->IsSessionActive () ||
445+ handlers[i]->is_called_ .load (std::memory_order_acquire));
441446 }
442447
443448 for (unsigned i = 0 ; i < batch_count; ++i)
444449 {
445450 sessions[i]->FinishSession ();
446451 ASSERT_FALSE (sessions[i]->IsSessionActive ());
447452
448- ASSERT_TRUE (handlers[i]->is_called_ );
449- ASSERT_FALSE (handlers[i]->got_response_ );
453+ ASSERT_TRUE (handlers[i]->is_called_ . load (std::memory_order_acquire) );
454+ ASSERT_FALSE (handlers[i]->got_response_ . load (std::memory_order_acquire) );
450455 }
451456}
452457
@@ -482,8 +487,8 @@ TEST_F(BasicCurlHttpTests, SendPostRequestAsync)
482487 ASSERT_FALSE (session->IsSessionActive ());
483488 }
484489
485- ASSERT_TRUE (handler->is_called_ );
486- ASSERT_TRUE (handler->got_response_ );
490+ ASSERT_TRUE (handler->is_called_ . load (std::memory_order_acquire) );
491+ ASSERT_TRUE (handler->got_response_ . load (std::memory_order_acquire) );
487492
488493 http_client.WaitBackgroundThreadExit ();
489494 }
@@ -521,8 +526,8 @@ TEST_F(BasicCurlHttpTests, FinishInAsyncCallback)
521526 {
522527 ASSERT_FALSE (sessions[i]->IsSessionActive ());
523528
524- ASSERT_TRUE (handlers[i]->is_called_ );
525- ASSERT_TRUE (handlers[i]->got_response_ );
529+ ASSERT_TRUE (handlers[i]->is_called_ . load (std::memory_order_acquire) );
530+ ASSERT_TRUE (handlers[i]->got_response_ . load (std::memory_order_acquire) );
526531 }
527532 }
528533}
0 commit comments