File
Blob: src/workerd/io/io-channels.c++
| 1 | #include "io-channels.h" |
| 2 | |
| 3 | namespace workerd { |
| 4 | |
| 5 | kj::Array<byte> IoChannelFactory::SubrequestChannel::getToken(ChannelTokenUsage usage) { |
| 6 | JSG_FAIL_REQUIRE(DOMDataCloneError, "This ServiceStub cannot be serialized."); |
| 7 | } |
| 8 | |
| 9 | kj::Array<byte> IoChannelFactory::ActorClassChannel::getToken(ChannelTokenUsage usage) { |
| 10 | JSG_FAIL_REQUIRE(DOMDataCloneError, "This Durable Object class cannot be serialized."); |
| 11 | } |
| 12 | |
| 13 | kj::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 | |
| 18 | kj::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 | |
| 24 | void 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 | |
| 30 | uint 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 | |
| 39 | kj::Own<Frankenvalue::CapTableEntry> IoChannelCapTableEntry::clone() { |
| 40 | return kj::heap<IoChannelCapTableEntry>(type, channel); |
| 41 | } |
| 42 | |
| 43 | kj::Own<Frankenvalue::CapTableEntry> IoChannelCapTableEntry::threadSafeClone() const { |
| 44 | return kj::heap<IoChannelCapTableEntry>(type, channel); |
| 45 | } |
| 46 | |
| 47 | } // namespace workerd |