DescriptionMojo: Implement plumbing to support passing handles over MessagePipes.
This is tricky for several reasons:
- We have fine-grained locking (and would like to keep it that way),
and need to avoid deadlock. In particular, acquiring multiple
dispatcher locks simultaneously is dangerous -- so we allow it to
fail.
- We want clean failure semantics. In particular, on failure,
WriteMessage() should leave the handles being sent valid. This means
that we may not remove them from the handle table until the call has
succeeded. Thus we have to mark them as busy.
- We need to avoid various races. E.g., still to do: When sending a
handle in-process, it's important that once |WriteMessage()| has
sent a handle, no more calls done on that particular handle may
proceed. As a result, we won't be able to simply transfer
dispatchers to a new handle (in-process) but instead must create a
new dispatcher referencing the same resource. This will also ensure
that |Wait()|s on that handle will be properly cancelled.
R=darin@chromium.org, darin
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=234302
Patch Set 1 #Patch Set 2 : old chunk mismatch #
Total comments: 12
Patch Set 3 : rebased & review comments #
Messages
Total messages: 5 (0 generated)
|