29
29
#include " v8-debug.h"
30
30
#include " util.h"
31
31
#include " util-inl.h"
32
- #include " queue.h"
33
32
34
33
#include < string.h>
35
34
@@ -64,8 +63,6 @@ Agent::Agent(Environment* env) : state_(kNone),
64
63
65
64
err = uv_mutex_init (&message_mutex_);
66
65
CHECK_EQ (err, 0 );
67
-
68
- QUEUE_INIT (&messages_);
69
66
}
70
67
71
68
@@ -75,13 +72,8 @@ Agent::~Agent() {
75
72
uv_sem_destroy (&start_sem_);
76
73
uv_mutex_destroy (&message_mutex_);
77
74
78
- // Clean-up messages
79
- while (!QUEUE_EMPTY (&messages_)) {
80
- QUEUE* q = QUEUE_HEAD (&messages_);
81
- QUEUE_REMOVE (q);
82
- AgentMessage* msg = ContainerOf (&AgentMessage::member, q);
75
+ while (AgentMessage* msg = messages_.PopFront ())
83
76
delete msg;
84
- }
85
77
}
86
78
87
79
@@ -281,13 +273,9 @@ void Agent::ChildSignalCb(uv_async_t* signal) {
281
273
Local<Object> api = PersistentToLocal (isolate, a->api_ );
282
274
283
275
uv_mutex_lock (&a->message_mutex_ );
284
- while (!QUEUE_EMPTY (&a->messages_ )) {
285
- QUEUE* q = QUEUE_HEAD (&a->messages_ );
286
- AgentMessage* msg = ContainerOf (&AgentMessage::member, q);
287
-
276
+ while (AgentMessage* msg = a->messages_ .PopFront ()) {
288
277
// Time to close everything
289
278
if (msg->data () == nullptr ) {
290
- QUEUE_REMOVE (q);
291
279
delete msg;
292
280
293
281
MakeCallback (isolate, api, " onclose" , 0 , nullptr );
@@ -296,10 +284,11 @@ void Agent::ChildSignalCb(uv_async_t* signal) {
296
284
297
285
// Waiting for client, do not send anything just yet
298
286
// TODO(indutny): move this to js-land
299
- if (a->wait_ )
287
+ if (a->wait_ ) {
288
+ a->messages_ .PushFront (msg); // Push message back into the ready queue.
300
289
break ;
290
+ }
301
291
302
- QUEUE_REMOVE (q);
303
292
Local<Value> argv[] = {
304
293
String::NewFromTwoByte (isolate,
305
294
msg->data (),
@@ -321,7 +310,7 @@ void Agent::ChildSignalCb(uv_async_t* signal) {
321
310
322
311
void Agent::EnqueueMessage (AgentMessage* message) {
323
312
uv_mutex_lock (&message_mutex_);
324
- QUEUE_INSERT_TAIL (& messages_, & message-> member );
313
+ messages_. PushBack ( message);
325
314
uv_mutex_unlock (&message_mutex_);
326
315
uv_async_send (&child_signal_);
327
316
}
0 commit comments