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
c639bda1
Commit
c639bda1
authored
Jul 26, 2017
by
Kenton Varda
Committed by
GitHub
Jul 26, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #522 from zombiezen/rpcspec
Clarify RPC spec documentation based on mail thread
parents
cfac2993
9007a4fb
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
14 deletions
+13
-14
rpc.capnp
c++/src/capnp/rpc.capnp
+13
-14
No files found.
c++/src/capnp/rpc.capnp
View file @
c639bda1
...
...
@@ -446,23 +446,22 @@ struct Call {
# in the calls so that the results need not pass back through Vat B.
#
# For example:
# - Alice, in Vat A, call foo() on Bob in Vat B.
# - Alice, in Vat A, call
s
foo() on Bob in Vat B.
# - Alice makes a pipelined call bar() on the promise returned by foo().
# - Later on, Bob resolves the promise from foo() to point at Carol, who lives in Vat A (next
# to Alice).
# - Vat B dutifully forwards the bar() call to Carol. Let us call this forwarded call bar'().
# Notice that bar() and bar'() are travelling in opposite directions on the same network
# link.
# - The `Call` for bar'() has `sendResultsTo` set to `yourself`, with the value being the
# question ID originally assigned to the bar() call.
# - The `Call` for bar'() has `sendResultsTo` set to `yourself`.
# - Vat B sends a `Return` for bar() with `takeFromOtherQuestion` set in place of the results,
# with the value set to the question ID of bar'(). Vat B does not wait for bar'() to return,
# as doing so would introduce unnecessary round trip latency.
# - Vat A receives bar'() and delivers it to Carol.
# - When bar'() returns, Vat A immediately takes the results and returns them from bar().
# - Meanwhile, Vat A sends a `Return` for bar'() to Vat B, with `resultsSentElsewhere` set in
# place of results.
# - Vat A sends a `Finish` for that call to Vat B.
# - Vat B receives the `Return` for bar'() and sends a `Return` for bar(), with
# `receivedFromYourself` set in place of the results.
# - Vat B receives the `Finish` for bar() and sends a `Finish` to bar'().
# - When bar'() returns, Vat A sends a `Return` for bar'() to Vat B, with `resultsSentElsewhere`
# set in place of results.
# - Vat A sends a `Finish` for the bar() call to Vat B.
# - Vat B receives the `Finish` for bar() and sends a `Finish` for bar'().
thirdParty @7 :RecipientId;
# **(level 3)**
...
...
@@ -518,7 +517,7 @@ struct Return {
takeFromOtherQuestion @6 :QuestionId;
# The sender has also sent (before this message) a `Call` with the given question ID and with
# `sendResultsTo.yourself` set, and the results of that other call should be used as the
# results here.
# results here.
`takeFromOtherQuestion` can only used once per question.
acceptFromThirdParty @7 :ThirdPartyCapId;
# **(level 3)**
...
...
@@ -781,7 +780,7 @@ struct Accept {
# Message type sent to pick up a capability hosted by the receiving vat and provided by a third
# party. The third party previously designated the capability using `Provide`.
#
# This message is also used to pick up a redirected return -- see `Return.
redirect
`.
# This message is also used to pick up a redirected return -- see `Return.
acceptFromThirdParty
`.
questionId @0 :QuestionId;
# A new question ID identifying this accept message, which will eventually receive a Return
...
...
@@ -951,8 +950,8 @@ struct CapDescriptor {
# Hopefully this is unusual.
senderHosted @1 :ExportId;
#
A capability newly exported by the sender. This is the ID of the new capability in the
#
sender's export table (receiver's import table
).
#
The ID of a capability in the sender's export table (receiver's import table). It may be a
#
newly allocated table entry, or an existing entry (increments the reference count
).
senderPromise @2 :ExportId;
# A promise that the sender will resolve later. The sender will send exactly one Resolve
...
...
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