diff options
Diffstat (limited to 'ipc/glue/PChildToParentStream.ipdl')
-rw-r--r-- | ipc/glue/PChildToParentStream.ipdl | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/ipc/glue/PChildToParentStream.ipdl b/ipc/glue/PChildToParentStream.ipdl new file mode 100644 index 0000000000..ac0e2ce142 --- /dev/null +++ b/ipc/glue/PChildToParentStream.ipdl @@ -0,0 +1,47 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +include protocol PBackground; +include protocol PContent; +include protocol PSocketProcess; + +include "mozilla/layers/WebRenderMessageUtils.h"; + +using mozilla::wr::ByteBuffer from "mozilla/webrender/WebRenderTypes.h"; + +namespace mozilla { +namespace ipc { + +// This is protocol is the opposite of PParentToChildStream. Please keep these +// protocols in sync. +protocol PChildToParentStream +{ + manager PBackground or PContent or PSocketProcess; + +parent: + async Buffer(ByteBuffer aBuffer); + async Close(nsresult aRv); + +child: + // The remote stream can be used in 2 ways: it can start receiving data + // immediately after the creation of the child actor, or it can wait until + // the child stream is actually used. This second configuration is enabled by + // passing 'true' to delayedStart in AutoIPCStream CTOR. + // If we are delaying the reading, at the first use of the remote stream, we + // must activate the sending of data. This happens by calling this method. + async StartReading(); + + // The parent side has hit an error condition and has requested the child + // actor issue a Close() message. The close must be initiated by the child + // to avoid racing with an in-flight Buffer() message. + async RequestClose(nsresult aRv); + + // Stream is always destroyed from the parent side. This occurs if the + // parent encounters an error while writing to its pipe or if the child + // signals the stream should close by SendClose(). + async __delete__(); +}; + +} // namespace ipc +} // namespace mozilla |