diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-04-18 00:54:59 +0200 |
---|---|---|
committer | Michaƫl Zasso <targos@protonmail.com> | 2019-05-18 13:59:47 +0200 |
commit | b7ed4d71870aa3500adb38fdd6b5d1eddd779fa7 (patch) | |
tree | bd7fd7ef502430aebaba6de60162f2444f2b5126 | |
parent | 1f935f899f2e7eaa0f20bbab148932508d85c022 (diff) | |
download | node-new-b7ed4d71870aa3500adb38fdd6b5d1eddd779fa7.tar.gz |
worker: move `receiving_messages_` field to `MessagePort`
This is a property of the native object associated with the
`MessagePort`, not something that should be set on the
conceptual `MessagePort` that may be transferred around.
PR-URL: https://github.com/nodejs/node/pull/27705
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
-rw-r--r-- | src/node_messaging.cc | 11 | ||||
-rw-r--r-- | src/node_messaging.h | 2 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/node_messaging.cc b/src/node_messaging.cc index c7d0b32700..b9212ba272 100644 --- a/src/node_messaging.cc +++ b/src/node_messaging.cc @@ -588,9 +588,9 @@ void MessagePort::OnMessage() { Mutex::ScopedLock lock(data_->mutex_); Debug(this, "MessagePort has message, receiving = %d", - static_cast<int>(data_->receiving_messages_)); + static_cast<int>(receiving_messages_)); - if (!data_->receiving_messages_) + if (!receiving_messages_) break; if (data_->incoming_messages_.empty()) break; @@ -722,17 +722,16 @@ void MessagePort::PostMessage(const FunctionCallbackInfo<Value>& args) { } void MessagePort::Start() { - Mutex::ScopedLock lock(data_->mutex_); Debug(this, "Start receiving messages"); - data_->receiving_messages_ = true; + receiving_messages_ = true; + Mutex::ScopedLock lock(data_->mutex_); if (!data_->incoming_messages_.empty()) TriggerAsync(); } void MessagePort::Stop() { - Mutex::ScopedLock lock(data_->mutex_); Debug(this, "Stop receiving messages"); - data_->receiving_messages_ = false; + receiving_messages_ = false; } void MessagePort::Start(const FunctionCallbackInfo<Value>& args) { diff --git a/src/node_messaging.h b/src/node_messaging.h index aa2559af2c..0a729c1410 100644 --- a/src/node_messaging.h +++ b/src/node_messaging.h @@ -116,7 +116,6 @@ class MessagePortData : public MemoryRetainer { // This mutex protects all fields below it, with the exception of // sibling_. mutable Mutex mutex_; - bool receiving_messages_ = false; std::list<Message> incoming_messages_; MessagePort* owner_ = nullptr; // This mutex protects the sibling_ field and is shared between two entangled @@ -205,6 +204,7 @@ class MessagePort : public HandleWrap { void TriggerAsync(); std::unique_ptr<MessagePortData> data_ = nullptr; + bool receiving_messages_ = false; uv_async_t async_; friend class MessagePortData; |