/* 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 PChildToParentStream; include protocol PParentToChildStream; include BlobTypes; include InputStreamParams; include ProtocolTypes; namespace mozilla { namespace ipc { // Do not use this directly. See IPCStream below. struct InputStreamParamsWithFds { InputStreamParams stream; OptionalFileDescriptorSet optionalFds; }; union IPCRemoteStreamType { PChildToParentStream; PParentToChildStream; }; struct IPCRemoteStream { // If this is true, the stream will send data only when the first operation // is done on the destination side. The benefit of this is that we do not // send data if not needed. On the other hand, it could have a performance // issue. bool delayedStart; IPCRemoteStreamType stream; }; // Use IPCStream or OptionalIPCStream in your ipdl to represent serialized // nsIInputStreams. Then use AutoIPCStream from IPCStreamUtils.h to perform // the serialization. union IPCStream { InputStreamParamsWithFds; IPCRemoteStream; }; union OptionalIPCStream { IPCStream; void_t; }; } // namespace ipc } // namespace mozilla