Blame ipc/glue/IPCStream.ipdlh

Packit f0b94e
/* This Source Code Form is subject to the terms of the Mozilla Public
Packit f0b94e
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
Packit f0b94e
 * You can obtain one at http://mozilla.org/MPL/2.0/. */
Packit f0b94e
Packit f0b94e
include protocol PChildToParentStream;
Packit f0b94e
include protocol PParentToChildStream;
Packit f0b94e
Packit f0b94e
include BlobTypes;
Packit f0b94e
include InputStreamParams;
Packit f0b94e
include ProtocolTypes;
Packit f0b94e
Packit f0b94e
namespace mozilla {
Packit f0b94e
namespace ipc {
Packit f0b94e
Packit f0b94e
// Do not use this directly.  See IPCStream below.
Packit f0b94e
struct InputStreamParamsWithFds
Packit f0b94e
{
Packit f0b94e
  InputStreamParams stream;
Packit f0b94e
  OptionalFileDescriptorSet optionalFds;
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
union IPCRemoteStreamType
Packit f0b94e
{
Packit f0b94e
  PChildToParentStream;
Packit f0b94e
  PParentToChildStream;
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
struct IPCRemoteStream
Packit f0b94e
{
Packit f0b94e
  // If this is true, the stream will send data only when the first operation
Packit f0b94e
  // is done on the destination side. The benefit of this is that we do not
Packit f0b94e
  // send data if not needed. On the other hand, it could have a performance
Packit f0b94e
  // issue.
Packit f0b94e
  bool delayedStart;
Packit f0b94e
Packit f0b94e
  IPCRemoteStreamType stream;
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
// Use IPCStream or OptionalIPCStream in your ipdl to represent serialized
Packit f0b94e
// nsIInputStreams.  Then use AutoIPCStream from IPCStreamUtils.h to perform
Packit f0b94e
// the serialization.
Packit f0b94e
union IPCStream
Packit f0b94e
{
Packit f0b94e
  InputStreamParamsWithFds;
Packit f0b94e
  IPCRemoteStream;
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
union OptionalIPCStream
Packit f0b94e
{
Packit f0b94e
  IPCStream;
Packit f0b94e
  void_t;
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
} // namespace ipc
Packit f0b94e
} // namespace mozilla