Class InboundDelivery
source code
An inbound message that has not yet been delivered.
This is created when a 'call' sequence has finished being received.
The Broker will add it to a queue. The delivery at the head of the queue
is serviced when all of its arguments have been resolved.
The only way that the arguments might not all be available is if one
of the Unslicers which created them has provided a 'ready_deferred' along
with the prospective object. The only standard Unslicer which does this
is the TheirReferenceUnslicer, which handles introductions. (custom
Unslicers might also provide a ready_deferred, for example a URL
slicer/unslicer pair for which the receiving end fetches the target of
the URL as its value, or a UnixFD slicer/unslicer that had to wait for a
side-channel unix-domain socket to finish transferring control over the
FD to the recipient before being ready).
Most Unslicers refuse to accept unready objects as their children
(most implementations of receiveChild() do 'assert ready_deferred is
None'). The CallUnslicer is fairly unique in not rejecting such
objects.
We do require, however, that all of the arguments be at least
referenceable. This is not generally a problem: the only time an
unslicer's receiveChild() can get a non-referenceable object (represented
by a Deferred) is if that unslicer is participating in a reference cycle
that has not yet completed, and CallUnslicers only live at the top level,
above any cycles.
|
|
| __init__(self,
broker,
reqID,
obj,
interface,
methodname,
methodSchema,
allargs) |
source code
|
|
|
|
|