Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
C
capnproto
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
capnproto
Commits
da96d673
Commit
da96d673
authored
Nov 22, 2013
by
Kenton Varda
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
unsupportedPipelineOps is not workable.
parent
d3869607
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
99 deletions
+28
-99
rpc.capnp
c++/src/capnp/rpc.capnp
+1
-22
rpc.capnp.c++
c++/src/capnp/rpc.capnp.c++
+27
-43
rpc.capnp.h
c++/src/capnp/rpc.capnp.h
+0
-34
No files found.
c++/src/capnp/rpc.capnp
View file @
da96d673
...
...
@@ -352,13 +352,7 @@ struct Return {
# Indicates that the call was canceled due to the caller sending a Finish message
# before the call had completed.
unsupportedPipelineOp @5 :Void;
# 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;
redirect @5 :ThirdPartyCapId;
# **(level 3)**
#
# The call has been redirected to another vat, and the result should be obtained by connecting
...
...
@@ -861,21 +855,6 @@ struct PromisedAnswer {
# pointed to by a field of the struct, you need a `getPointerField` 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 {
noop @0 :Void;
# Does nothing. This member is mostly defined so that we can make `Op` a union even
...
...
c++/src/capnp/rpc.capnp.c++
View file @
da96d673
...
...
@@ -425,72 +425,65 @@ const ::capnp::_::RawSchema s_dae8b0f61aab5f99 = {
0xdae8b0f61aab5f99
,
b_dae8b0f61aab5f99
.
words
,
61
,
d_dae8b0f61aab5f99
,
m_dae8b0f61aab5f99
,
1
,
3
,
i_dae8b0f61aab5f99
,
nullptr
,
nullptr
};
static
const
::
capnp
::
_
::
AlignedData
<
1
24
>
b_9e19b28d3db3573a
=
{
static
const
::
capnp
::
_
::
AlignedData
<
1
08
>
b_9e19b28d3db3573a
=
{
{
0
,
0
,
0
,
0
,
5
,
0
,
5
,
0
,
58
,
87
,
179
,
61
,
141
,
178
,
25
,
158
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
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
,
17
,
0
,
0
,
0
,
186
,
0
,
0
,
0
,
25
,
0
,
0
,
0
,
7
,
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
,
99
,
97
,
112
,
110
,
112
,
47
,
114
,
112
,
99
,
46
,
99
,
97
,
112
,
110
,
112
,
58
,
82
,
101
,
116
,
117
,
114
,
110
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
2
8
,
0
,
0
,
0
,
3
,
0
,
4
,
0
,
2
4
,
0
,
0
,
0
,
3
,
0
,
4
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
81
,
0
,
0
,
0
,
90
,
0
,
0
,
0
,
1
53
,
0
,
0
,
0
,
90
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
80
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
1
88
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
1
52
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
1
60
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
85
,
0
,
0
,
0
,
106
,
0
,
0
,
0
,
1
57
,
0
,
0
,
0
,
106
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
84
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
204
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
1
56
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
176
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
2
,
0
,
255
,
255
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
2
,
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
,
1
96
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
204
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
1
68
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
176
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
3
,
0
,
254
,
255
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
3
,
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
,
200
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
208
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
172
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
180
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
4
,
0
,
253
,
255
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
4
,
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
,
204
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
212
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
5
,
0
,
252
,
255
,
0
,
0
,
0
,
0
,
176
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
184
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
5
,
0
,
252
,
255
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
5
,
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
,
212
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
220
,
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
,
180
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
188
,
0
,
0
,
0
,
2
,
0
,
1
,
0
,
113
,
117
,
101
,
115
,
116
,
105
,
111
,
110
,
73
,
100
,
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 = {
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
,
0
,
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 = {
static
const
::
capnp
::
_
::
RawSchema
*
const
d_9e19b28d3db3573a
[]
=
{
&
s_d625b7063acf691a
,
};
static
const
uint16_t
m_9e19b28d3db3573a
[]
=
{
4
,
3
,
0
,
6
,
2
,
1
,
5
};
static
const
uint16_t
i_9e19b28d3db3573a
[]
=
{
2
,
3
,
4
,
5
,
6
,
0
,
1
};
static
const
uint16_t
m_9e19b28d3db3573a
[]
=
{
4
,
3
,
0
,
5
,
2
,
1
};
static
const
uint16_t
i_9e19b28d3db3573a
[]
=
{
2
,
3
,
4
,
5
,
0
,
1
};
const
::
capnp
::
_
::
RawSchema
s_9e19b28d3db3573a
=
{
0x9e19b28d3db3573a
,
b_9e19b28d3db3573a
.
words
,
1
24
,
d_9e19b28d3db3573a
,
m_9e19b28d3db3573a
,
1
,
7
,
i_9e19b28d3db3573a
,
nullptr
,
nullptr
0x9e19b28d3db3573a
,
b_9e19b28d3db3573a
.
words
,
1
08
,
d_9e19b28d3db3573a
,
m_9e19b28d3db3573a
,
1
,
6
,
i_9e19b28d3db3573a
,
nullptr
,
nullptr
};
static
const
::
capnp
::
_
::
AlignedData
<
49
>
b_d37d2eb2c2f80e63
=
{
{
0
,
0
,
0
,
0
,
5
,
0
,
5
,
0
,
...
...
c++/src/capnp/rpc.capnp.h
View file @
da96d673
...
...
@@ -70,7 +70,6 @@ struct Return {
RESULTS
,
EXCEPTION
,
CANCELED
,
UNSUPPORTED_PIPELINE_OP
,
REDIRECT
,
};
};
...
...
@@ -827,9 +826,6 @@ public:
inline
bool
isCanceled
()
const
;
inline
::
capnp
::
Void
getCanceled
()
const
;
inline
bool
isUnsupportedPipelineOp
()
const
;
inline
::
capnp
::
Void
getUnsupportedPipelineOp
()
const
;
inline
bool
isRedirect
()
const
;
inline
bool
hasRedirect
()
const
;
inline
::
capnp
::
ObjectPointer
::
Reader
getRedirect
()
const
;
...
...
@@ -893,10 +889,6 @@ public:
inline
::
capnp
::
Void
getCanceled
();
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
hasRedirect
();
inline
::
capnp
::
ObjectPointer
::
Builder
getRedirect
();
...
...
@@ -3594,32 +3586,6 @@ inline void Return::Builder::setCanceled( ::capnp::Void 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
{
return
which
()
==
Return
::
REDIRECT
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment