Skip to content
File

Blob: src/workerd/api/streams/common.c++

1.3 KB
1// Copyright (c) 2017-2022 Cloudflare, Inc.
2// Licensed under the Apache 2.0 license found in the LICENSE file or at:
3// https://opensource.org/licenses/Apache-2.0
4 
5#include "common.h"
6 
7namespace workerd::api {
8 
9WritableStreamController::PendingAbort::PendingAbort(
10 jsg::Lock& js, jsg::PromiseResolverPair<void> prp, v8::Local<v8::Value> reason, bool reject)
11 : resolver(kj::mv(prp.resolver)),
12 promise(kj::mv(prp.promise)),
13 reason(js.v8Ref(reason)),
14 reject(reject) {}
15 
16WritableStreamController::PendingAbort::PendingAbort(
17 jsg::Lock& js, v8::Local<v8::Value> reason, bool reject)
18 : WritableStreamController::PendingAbort(js, js.newPromiseAndResolver<void>(), reason, reject) {
19}
20 
21void WritableStreamController::PendingAbort::complete(jsg::Lock& js) {
22 if (reject) {
23 fail(js, reason.getHandle(js));
24 } else {
25 maybeResolvePromise(js, resolver);
26 }
27}
28 
29void WritableStreamController::PendingAbort::fail(jsg::Lock& js, v8::Local<v8::Value> reason) {
30 maybeRejectPromise<void>(js, resolver, reason);
31}
32 
33kj::Maybe<kj::Own<WritableStreamController::PendingAbort>> WritableStreamController::PendingAbort::
34 dequeue(kj::Maybe<kj::Own<WritableStreamController::PendingAbort>>& maybePendingAbort) {
35 return kj::mv(maybePendingAbort);
36}
37 
38} // namespace workerd::api