Commit da96d673 authored by Kenton Varda's avatar Kenton Varda

unsupportedPipelineOps is not workable.

parent d3869607
...@@ -352,13 +352,7 @@ struct Return { ...@@ -352,13 +352,7 @@ struct Return {
# Indicates that the call was canceled due to the caller sending a Finish message # Indicates that the call was canceled due to the caller sending a Finish message
# before the call had completed. # before the call had completed.
unsupportedPipelineOp @5 :Void; redirect @5 :ThirdPartyCapId;
# The call was addressed to a `PromisedAnswer` that was not understood by the callee because
# it used features that the callee's RPC implementation does not support. The caller should
# wait for the first call to return and then retry the dependent call as a regular,
# non-pipelined call.
redirect @6 :ThirdPartyCapId;
# **(level 3)** # **(level 3)**
# #
# The call has been redirected to another vat, and the result should be obtained by connecting # The call has been redirected to another vat, and the result should be obtained by connecting
...@@ -861,21 +855,6 @@ struct PromisedAnswer { ...@@ -861,21 +855,6 @@ struct PromisedAnswer {
# pointed to by a field of the struct, you need a `getPointerField` op. # pointed to by a field of the struct, you need a `getPointerField` op.
struct Op { struct Op {
# If an RPC implementation receives an `Op` of a type it doesn't recognize, it must immediately
# stop serving pipeline requests on this question ID. The crurrent request, as well as
# all future pipeline requests on the same question ID, must return with
# `unsupportedPipelineOp` set. The caller must then arrange to re-send the calls as normal
# calls later. The reason that all future pipeline calls on the same question must fail is
# so that if the caller was relying on the calls being delivered in a particular order, this
# requirement is not violated.
#
# TODO(soon): There's still a problem here in that if the call returns then the caller might
# start making regular (non-pipeline) calls to it before it finds out that the pipelined calls
# failed. Also, what about PromisedAnswers that appear in CapDescriptors? Maybe what really
# needs to happen here is, the callee echos the PromisedAnswer back to the caller to say
# "I don't know how to resolve this; please do it for me", and in the meantime it blocks all
# calls to the capability? Ick...
union { union {
noop @0 :Void; noop @0 :Void;
# Does nothing. This member is mostly defined so that we can make `Op` a union even # Does nothing. This member is mostly defined so that we can make `Op` a union even
......
...@@ -425,72 +425,65 @@ const ::capnp::_::RawSchema s_dae8b0f61aab5f99 = { ...@@ -425,72 +425,65 @@ const ::capnp::_::RawSchema s_dae8b0f61aab5f99 = {
0xdae8b0f61aab5f99, b_dae8b0f61aab5f99.words, 61, d_dae8b0f61aab5f99, m_dae8b0f61aab5f99, 0xdae8b0f61aab5f99, b_dae8b0f61aab5f99.words, 61, d_dae8b0f61aab5f99, m_dae8b0f61aab5f99,
1, 3, i_dae8b0f61aab5f99, nullptr, nullptr 1, 3, i_dae8b0f61aab5f99, nullptr, nullptr
}; };
static const ::capnp::_::AlignedData<124> b_9e19b28d3db3573a = { static const ::capnp::_::AlignedData<108> b_9e19b28d3db3573a = {
{ 0, 0, 0, 0, 5, 0, 5, 0, { 0, 0, 0, 0, 5, 0, 5, 0,
58, 87, 179, 61, 141, 178, 25, 158, 58, 87, 179, 61, 141, 178, 25, 158,
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0,
80, 162, 82, 37, 27, 152, 18, 179, 80, 162, 82, 37, 27, 152, 18, 179,
2, 0, 7, 0, 0, 0, 5, 0, 2, 0, 7, 0, 0, 0, 4, 0,
2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 186, 0, 0, 0, 17, 0, 0, 0, 186, 0, 0, 0,
25, 0, 0, 0, 7, 0, 0, 0, 25, 0, 0, 0, 7, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
21, 0, 0, 0, 143, 1, 0, 0, 21, 0, 0, 0, 87, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
99, 97, 112, 110, 112, 47, 114, 112, 99, 97, 112, 110, 112, 47, 114, 112,
99, 46, 99, 97, 112, 110, 112, 58, 99, 46, 99, 97, 112, 110, 112, 58,
82, 101, 116, 117, 114, 110, 0, 0, 82, 101, 116, 117, 114, 110, 0, 0,
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0,
28, 0, 0, 0, 3, 0, 4, 0, 24, 0, 0, 0, 3, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
181, 0, 0, 0, 90, 0, 0, 0, 153, 0, 0, 0, 90, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
180, 0, 0, 0, 2, 0, 1, 0, 152, 0, 0, 0, 2, 0, 1, 0,
188, 0, 0, 0, 2, 0, 1, 0, 160, 0, 0, 0, 2, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
185, 0, 0, 0, 106, 0, 0, 0, 157, 0, 0, 0, 106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
184, 0, 0, 0, 2, 0, 1, 0, 156, 0, 0, 0, 2, 0, 1, 0,
204, 0, 0, 0, 2, 0, 1, 0, 176, 0, 0, 0, 2, 0, 1, 0,
2, 0, 255, 255, 1, 0, 0, 0, 2, 0, 255, 255, 1, 0, 0, 0,
0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
201, 0, 0, 0, 66, 0, 0, 0, 173, 0, 0, 0, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
196, 0, 0, 0, 2, 0, 1, 0, 168, 0, 0, 0, 2, 0, 1, 0,
204, 0, 0, 0, 2, 0, 1, 0, 176, 0, 0, 0, 2, 0, 1, 0,
3, 0, 254, 255, 1, 0, 0, 0, 3, 0, 254, 255, 1, 0, 0, 0,
0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
201, 0, 0, 0, 82, 0, 0, 0, 173, 0, 0, 0, 82, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
200, 0, 0, 0, 2, 0, 1, 0, 172, 0, 0, 0, 2, 0, 1, 0,
208, 0, 0, 0, 2, 0, 1, 0, 180, 0, 0, 0, 2, 0, 1, 0,
4, 0, 253, 255, 0, 0, 0, 0, 4, 0, 253, 255, 0, 0, 0, 0,
0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
205, 0, 0, 0, 74, 0, 0, 0, 177, 0, 0, 0, 74, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
204, 0, 0, 0, 2, 0, 1, 0, 176, 0, 0, 0, 2, 0, 1, 0,
212, 0, 0, 0, 2, 0, 1, 0, 184, 0, 0, 0, 2, 0, 1, 0,
5, 0, 252, 255, 0, 0, 0, 0, 5, 0, 252, 255, 1, 0, 0, 0,
0, 0, 1, 0, 5, 0, 0, 0, 0, 0, 1, 0, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
209, 0, 0, 0, 178, 0, 0, 0, 181, 0, 0, 0, 74, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
212, 0, 0, 0, 2, 0, 1, 0, 180, 0, 0, 0, 2, 0, 1, 0,
220, 0, 0, 0, 2, 0, 1, 0, 188, 0, 0, 0, 2, 0, 1, 0,
6, 0, 251, 255, 1, 0, 0, 0,
0, 0, 1, 0, 6, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
217, 0, 0, 0, 74, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
216, 0, 0, 0, 2, 0, 1, 0,
224, 0, 0, 0, 2, 0, 1, 0,
113, 117, 101, 115, 116, 105, 111, 110, 113, 117, 101, 115, 116, 105, 111, 110,
73, 100, 0, 0, 0, 0, 0, 0, 73, 100, 0, 0, 0, 0, 0, 0,
8, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
...@@ -533,15 +526,6 @@ static const ::capnp::_::AlignedData<124> b_9e19b28d3db3573a = { ...@@ -533,15 +526,6 @@ static const ::capnp::_::AlignedData<124> b_9e19b28d3db3573a = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
117, 110, 115, 117, 112, 112, 111, 114,
116, 101, 100, 80, 105, 112, 101, 108,
105, 110, 101, 79, 112, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
114, 101, 100, 105, 114, 101, 99, 116, 114, 101, 100, 105, 114, 101, 99, 116,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
18, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0,
...@@ -554,11 +538,11 @@ static const ::capnp::_::AlignedData<124> b_9e19b28d3db3573a = { ...@@ -554,11 +538,11 @@ static const ::capnp::_::AlignedData<124> b_9e19b28d3db3573a = {
static const ::capnp::_::RawSchema* const d_9e19b28d3db3573a[] = { static const ::capnp::_::RawSchema* const d_9e19b28d3db3573a[] = {
&s_d625b7063acf691a, &s_d625b7063acf691a,
}; };
static const uint16_t m_9e19b28d3db3573a[] = {4, 3, 0, 6, 2, 1, 5}; static const uint16_t m_9e19b28d3db3573a[] = {4, 3, 0, 5, 2, 1};
static const uint16_t i_9e19b28d3db3573a[] = {2, 3, 4, 5, 6, 0, 1}; static const uint16_t i_9e19b28d3db3573a[] = {2, 3, 4, 5, 0, 1};
const ::capnp::_::RawSchema s_9e19b28d3db3573a = { const ::capnp::_::RawSchema s_9e19b28d3db3573a = {
0x9e19b28d3db3573a, b_9e19b28d3db3573a.words, 124, d_9e19b28d3db3573a, m_9e19b28d3db3573a, 0x9e19b28d3db3573a, b_9e19b28d3db3573a.words, 108, d_9e19b28d3db3573a, m_9e19b28d3db3573a,
1, 7, i_9e19b28d3db3573a, nullptr, nullptr 1, 6, i_9e19b28d3db3573a, nullptr, nullptr
}; };
static const ::capnp::_::AlignedData<49> b_d37d2eb2c2f80e63 = { static const ::capnp::_::AlignedData<49> b_d37d2eb2c2f80e63 = {
{ 0, 0, 0, 0, 5, 0, 5, 0, { 0, 0, 0, 0, 5, 0, 5, 0,
......
...@@ -70,7 +70,6 @@ struct Return { ...@@ -70,7 +70,6 @@ struct Return {
RESULTS, RESULTS,
EXCEPTION, EXCEPTION,
CANCELED, CANCELED,
UNSUPPORTED_PIPELINE_OP,
REDIRECT, REDIRECT,
}; };
}; };
...@@ -827,9 +826,6 @@ public: ...@@ -827,9 +826,6 @@ public:
inline bool isCanceled() const; inline bool isCanceled() const;
inline ::capnp::Void getCanceled() const; inline ::capnp::Void getCanceled() const;
inline bool isUnsupportedPipelineOp() const;
inline ::capnp::Void getUnsupportedPipelineOp() const;
inline bool isRedirect() const; inline bool isRedirect() const;
inline bool hasRedirect() const; inline bool hasRedirect() const;
inline ::capnp::ObjectPointer::Reader getRedirect() const; inline ::capnp::ObjectPointer::Reader getRedirect() const;
...@@ -893,10 +889,6 @@ public: ...@@ -893,10 +889,6 @@ public:
inline ::capnp::Void getCanceled(); inline ::capnp::Void getCanceled();
inline void setCanceled( ::capnp::Void value = ::capnp::VOID); inline void setCanceled( ::capnp::Void value = ::capnp::VOID);
inline bool isUnsupportedPipelineOp();
inline ::capnp::Void getUnsupportedPipelineOp();
inline void setUnsupportedPipelineOp( ::capnp::Void value = ::capnp::VOID);
inline bool isRedirect(); inline bool isRedirect();
inline bool hasRedirect(); inline bool hasRedirect();
inline ::capnp::ObjectPointer::Builder getRedirect(); inline ::capnp::ObjectPointer::Builder getRedirect();
...@@ -3594,32 +3586,6 @@ inline void Return::Builder::setCanceled( ::capnp::Void value) { ...@@ -3594,32 +3586,6 @@ inline void Return::Builder::setCanceled( ::capnp::Void value) {
0 * ::capnp::ELEMENTS, value); 0 * ::capnp::ELEMENTS, value);
} }
inline bool Return::Reader::isUnsupportedPipelineOp() const {
return which() == Return::UNSUPPORTED_PIPELINE_OP;
}
inline bool Return::Builder::isUnsupportedPipelineOp() {
return which() == Return::UNSUPPORTED_PIPELINE_OP;
}
inline ::capnp::Void Return::Reader::getUnsupportedPipelineOp() const {
KJ_IREQUIRE(which() == Return::UNSUPPORTED_PIPELINE_OP,
"Must check which() before get()ing a union member.");
return _reader.getDataField< ::capnp::Void>(
0 * ::capnp::ELEMENTS);
}
inline ::capnp::Void Return::Builder::getUnsupportedPipelineOp() {
KJ_IREQUIRE(which() == Return::UNSUPPORTED_PIPELINE_OP,
"Must check which() before get()ing a union member.");
return _builder.getDataField< ::capnp::Void>(
0 * ::capnp::ELEMENTS);
}
inline void Return::Builder::setUnsupportedPipelineOp( ::capnp::Void value) {
_builder.setDataField<Return::Which>(
2 * ::capnp::ELEMENTS, Return::UNSUPPORTED_PIPELINE_OP);
_builder.setDataField< ::capnp::Void>(
0 * ::capnp::ELEMENTS, value);
}
inline bool Return::Reader::isRedirect() const { inline bool Return::Reader::isRedirect() const {
return which() == Return::REDIRECT; return which() == Return::REDIRECT;
} }
......
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