summaryrefslogtreecommitdiffstats
path: root/ipc/glue/PChildToParentStream.ipdl
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/glue/PChildToParentStream.ipdl')
-rw-r--r--ipc/glue/PChildToParentStream.ipdl47
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