Allow cancellation of all capability contexts

This commit is contained in:
Lasse Blaauwbroek
2023-10-28 07:03:42 +02:00
committed by Jacob Alexander
parent 49bda5ccae
commit 0ec4d0b778
4 changed files with 41 additions and 4 deletions

View File

@@ -75,10 +75,19 @@ public:
kj::Own<PyRefCounter> py_server;
kj::Own<PyRefCounter> kj_loop;
#if (CAPNP_VERSION_MAJOR < 1)
PythonInterfaceDynamicImpl(capnp::InterfaceSchema & schema,
kj::Own<PyRefCounter> _py_server,
kj::Own<PyRefCounter> kj_loop)
: capnp::DynamicCapability::Server(schema), py_server(kj::mv(_py_server)), kj_loop(kj::mv(kj_loop)) { }
: capnp::DynamicCapability::Server(schema),
py_server(kj::mv(_py_server)), kj_loop(kj::mv(kj_loop)) { }
#else
PythonInterfaceDynamicImpl(capnp::InterfaceSchema & schema,
kj::Own<PyRefCounter> _py_server,
kj::Own<PyRefCounter> kj_loop)
: capnp::DynamicCapability::Server(schema, { true }),
py_server(kj::mv(_py_server)), kj_loop(kj::mv(kj_loop)) { }
#endif
~PythonInterfaceDynamicImpl() {
}
@@ -87,6 +96,12 @@ public:
capnp::CallContext< capnp::DynamicStruct, capnp::DynamicStruct> context);
};
inline void allowCancellation(capnp::CallContext<capnp::DynamicStruct, capnp::DynamicStruct> context) {
#if (CAPNP_VERSION_MAJOR < 1)
context.allowCancellation();
#endif
}
class PyAsyncIoStream: public kj::AsyncIoStream {
public:
kj::Own<PyRefCounter> protocol;