Commit 5edae913 authored by Kenton Varda's avatar Kenton Varda

Don't rely on default assignment operators for cap clients since they break with…

Don't rely on default assignment operators for cap clients since they break with double virtual inheritance.
parent e2905da7
......@@ -1307,20 +1307,19 @@ private:
" typedef ", fullName, " Calls;\n"
" typedef ", fullName, " Reads;\n"
"\n"
" inline Client(decltype(nullptr))\n"
" : ::capnp::Capability::Client(nullptr) {}\n"
" inline explicit Client(::kj::Own<const ::capnp::ClientHook>&& hook)\n"
" : ::capnp::Capability::Client(::kj::mv(hook)) {}\n"
" Client(decltype(nullptr));\n"
" explicit Client(::kj::Own<const ::capnp::ClientHook>&& hook);\n"
" template <typename T, typename = ::kj::EnableIf< ::kj::canConvert<T*, Server*>()>>\n"
" inline Client(::kj::Own<T>&& server,\n"
" const ::kj::EventLoop& loop = ::kj::EventLoop::current())\n"
" : ::capnp::Capability::Client(::kj::mv(server), loop) {}\n"
" Client(::kj::Own<T>&& server,\n"
" const ::kj::EventLoop& loop = ::kj::EventLoop::current());\n"
" template <typename T, typename = ::kj::EnableIf< ::kj::canConvert<T*, Client*>()>>\n"
" inline Client(::kj::Promise<T>&& promise,\n"
" const ::kj::EventLoop& loop = ::kj::EventLoop::current())\n"
" : ::capnp::Capability::Client(::kj::mv(promise), loop) {}\n"
" inline Client(::kj::Exception&& exception)\n"
" : ::capnp::Capability::Client(::kj::mv(exception)) {}\n"
" Client(::kj::Promise<T>&& promise,\n"
" const ::kj::EventLoop& loop = ::kj::EventLoop::current());\n"
" Client(::kj::Exception&& exception);\n"
" Client(const Client&) = default;\n"
" Client(Client&&) = default;\n"
" Client& operator=(const Client& other);\n"
" Client& operator=(Client&& other);\n"
"\n",
KJ_MAP(m, methods) { return kj::mv(m.clientDecls); },
"\n"
......@@ -1349,7 +1348,31 @@ private:
"};\n"
"\n"),
kj::strTree(),
kj::strTree(
"inline ", fullName, "::Client::Client(decltype(nullptr))\n"
" : ::capnp::Capability::Client(nullptr) {}\n"
"inline ", fullName, "::Client::Client(\n"
" ::kj::Own<const ::capnp::ClientHook>&& hook)\n"
" : ::capnp::Capability::Client(::kj::mv(hook)) {}\n"
"template <typename T, typename>\n"
"inline ", fullName, "::Client::Client(\n"
" ::kj::Own<T>&& server, const ::kj::EventLoop& loop)\n"
" : ::capnp::Capability::Client(::kj::mv(server), loop) {}\n"
"template <typename T, typename>\n"
"inline ", fullName, "::Client::Client(\n"
" ::kj::Promise<T>&& promise, const ::kj::EventLoop& loop)\n"
" : ::capnp::Capability::Client(::kj::mv(promise), loop) {}\n"
"inline ", fullName, "::Client::Client(::kj::Exception&& exception)\n"
" : ::capnp::Capability::Client(::kj::mv(exception)) {}\n"
"inline ", fullName, "::Client& ", fullName, "::Client::operator=(const Client& other) {\n"
" ::capnp::Capability::Client::operator=(other);\n"
" return *this;\n"
"}\n"
"inline ", fullName, "::Client& ", fullName, "::Client::operator=(Client&& other) {\n"
" ::capnp::Capability::Client::operator=(kj::mv(other));\n"
" return *this;\n"
"}\n"
"\n"),
kj::strTree(
KJ_MAP(m, methods) { return kj::mv(m.sourceDefs); },
......
......@@ -2491,6 +2491,8 @@ private:
return nullptr;
}
}
KJ_UNREACHABLE;
}
void handleReturn(kj::Own<IncomingRpcMessage>&& message, const rpc::Return::Reader& ret) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment