summaryrefslogtreecommitdiff
path: root/src/node_messaging.cc
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2020-06-26 00:40:50 +0200
committerAnna Henningsen <anna@addaleax.net>2020-07-22 22:59:11 +0200
commit459d3a015afbdfda7f2ff214a7f3b62875958fbb (patch)
treef35c6ed960258eec1cd679accd4a407de76171e0 /src/node_messaging.cc
parent16b11cd2adaa5f60382a7f205f893f38a5061fff (diff)
downloadnode-new-459d3a015afbdfda7f2ff214a7f3b62875958fbb.tar.gz
worker: make MessagePort inherit from EventTarget
Use `NodeEventTarget` to provide a mixed `EventEmitter`/`EventTarget` API interface. PR-URL: https://github.com/nodejs/node/pull/34057 Refs: https://twitter.com/addaleax/status/1276289101671608320 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'src/node_messaging.cc')
-rw-r--r--src/node_messaging.cc17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/node_messaging.cc b/src/node_messaging.cc
index add851e083..c615293570 100644
--- a/src/node_messaging.cc
+++ b/src/node_messaging.cc
@@ -746,6 +746,8 @@ void MessagePort::OnMessage() {
Local<Value> payload;
Local<Value> message_error;
+ Local<Value> argv[2];
+
{
// Catch any exceptions from parsing the message itself (not from
// emitting it) as 'messageeror' events.
@@ -764,16 +766,15 @@ void MessagePort::OnMessage() {
continue;
}
- if (MakeCallback(emit_message, 1, &payload).IsEmpty()) {
+ argv[0] = payload;
+ argv[1] = env()->message_string();
+
+ if (MakeCallback(emit_message, arraysize(argv), argv).IsEmpty()) {
reschedule:
if (!message_error.IsEmpty()) {
- // This should become a `messageerror` event in the sense of the
- // EventTarget API at some point.
- Local<Value> argv[] = {
- env()->messageerror_string(),
- message_error
- };
- USE(MakeCallback(env()->emit_string(), arraysize(argv), argv));
+ argv[0] = message_error;
+ argv[1] = env()->messageerror_string();
+ USE(MakeCallback(emit_message, arraysize(argv), argv));
}
// Re-schedule OnMessage() execution in case of failure.