diff options
author | Anna Henningsen <anna@addaleax.net> | 2020-06-26 00:40:50 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2020-07-22 22:59:11 +0200 |
commit | 459d3a015afbdfda7f2ff214a7f3b62875958fbb (patch) | |
tree | f35c6ed960258eec1cd679accd4a407de76171e0 /src/node_messaging.cc | |
parent | 16b11cd2adaa5f60382a7f205f893f38a5061fff (diff) | |
download | node-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.cc | 17 |
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. |