Skip to content
File

Blob: src/workerd/io/io-channels.c++

1.8 KB
1#include "io-channels.h"
2 
3namespace workerd {
4 
5kj::Array<byte> IoChannelFactory::SubrequestChannel::getToken(ChannelTokenUsage usage) {
6 JSG_FAIL_REQUIRE(DOMDataCloneError, "This ServiceStub cannot be serialized.");
7}
8 
9kj::Array<byte> IoChannelFactory::ActorClassChannel::getToken(ChannelTokenUsage usage) {
10 JSG_FAIL_REQUIRE(DOMDataCloneError, "This Durable Object class cannot be serialized.");
11}
12 
13kj::Own<IoChannelFactory::SubrequestChannel> IoChannelFactory::subrequestChannelFromToken(
14 ChannelTokenUsage usage, kj::ArrayPtr<const byte> token) {
15 JSG_FAIL_REQUIRE(DOMDataCloneError, "This Worker is not able to deserialize ServiceStubs.");
16}
17 
18kj::Own<IoChannelFactory::ActorClassChannel> IoChannelFactory::actorClassFromToken(
19 ChannelTokenUsage usage, kj::ArrayPtr<const byte> token) {
20 JSG_FAIL_REQUIRE(
21 DOMDataCloneError, "This Worker is not able to deserialize Durable Object class stubs.");
22}
23 
24void IoChannelFactory::ActorChannel::requireAllowsTransfer() {
25 JSG_FAIL_REQUIRE(DOMDataCloneError,
26 "Durable Object stubs cannot (yet) be transferred between Workers. This will change in "
27 "a future version.");
28}
29 
30uint IoChannelCapTableEntry::getChannelNumber(Type expectedType) {
31 // A type mismatch shouldn't be possible as long as attackers cannot tamper with the
32 // serialization, but we do the check to catch bugs.
33 KJ_REQUIRE(type == expectedType,
34 "IoChannelCapTableEntry type didn't match serialized JavaScript API type.");
35 
36 return channel;
37}
38 
39kj::Own<Frankenvalue::CapTableEntry> IoChannelCapTableEntry::clone() {
40 return kj::heap<IoChannelCapTableEntry>(type, channel);
41}
42 
43kj::Own<Frankenvalue::CapTableEntry> IoChannelCapTableEntry::threadSafeClone() const {
44 return kj::heap<IoChannelCapTableEntry>(type, channel);
45}
46 
47} // namespace workerd