- From: Anne van Kesteren <notifications@github.com>
- Date: Mon, 15 May 2017 06:36:22 -0700
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/438/301476670@github.com>
AbortSignal gains an associated **incoming port** (a MessagePort object) and **outgoing ports** (a set of MessagePort objects). AbortSignal object serialization steps: 1. If _value_'s aborted flag is set, then set _serialized_.[[Aborted]] to true and return. (Or should we simply throw? There's not much point to this.) 1. Let _channel_ be a new MessageChannel object. 1. Append _channel_'s port1 to _value_'s outgoing ports. 1. Append the following algorithm to _value_'s abort algorithms: (Aside: we should change abort algorithms invocation to pass a _signal_ argument.) 1. For each _port_ in _signal_'s outgoing ports: invoke _port_'s `postMessage()` with "aborted". (Aside: hopefully we can do better than this.) 1. Set _serialized_.[[IncomingPort]] to ! StructuredSerializeWithTransfer(_channel_'s port2, _channel_'s port2). AbortSignal object deserialization steps: 1. If _serialized_.[[Aborted]] is present and true, then set _value_'s aborted flag and return. 1. Set _value_'s incoming port to ! StructuredDeserializeWithTransfer(_serialized_.[[IncomingPort]], the current Realm). 1. Append an event listener to _value_'s incoming port listening for "message" events that runs these steps with the event _e_: 1. Assert: _e_.data is "aborted". 1. Run signal abort with _value_. 1. Enable _value_'s incoming port. I think this works, but it needs to be double checked. cc @domenic -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/dom/issues/438#issuecomment-301476670
Received on Monday, 15 May 2017 13:37:22 UTC