michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this file, michael@0: * You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef mozilla_ipc_nsIIPCSerializableInputStream_h michael@0: #define mozilla_ipc_nsIIPCSerializableInputStream_h michael@0: michael@0: #include "nsISupports.h" michael@0: #include "mozilla/Attributes.h" michael@0: michael@0: struct nsTArrayDefaultAllocator; michael@0: template class nsTArray; michael@0: michael@0: namespace mozilla { michael@0: namespace ipc { michael@0: michael@0: class FileDescriptor; michael@0: class InputStreamParams; michael@0: michael@0: } // namespace ipc michael@0: } // namespace mozilla michael@0: michael@0: #define NS_IIPCSERIALIZABLEINPUTSTREAM_IID \ michael@0: {0xb0211b14, 0xea6d, 0x40d4, {0x87, 0xb5, 0x7b, 0xe3, 0xdf, 0xac, 0x09, 0xd1}} michael@0: michael@0: class NS_NO_VTABLE nsIIPCSerializableInputStream : public nsISupports michael@0: { michael@0: public: michael@0: typedef nsTArray michael@0: FileDescriptorArray; michael@0: michael@0: NS_DECLARE_STATIC_IID_ACCESSOR(NS_IIPCSERIALIZABLEINPUTSTREAM_IID) michael@0: michael@0: virtual void michael@0: Serialize(mozilla::ipc::InputStreamParams& aParams, michael@0: FileDescriptorArray& aFileDescriptors) = 0; michael@0: michael@0: virtual bool michael@0: Deserialize(const mozilla::ipc::InputStreamParams& aParams, michael@0: const FileDescriptorArray& aFileDescriptors) = 0; michael@0: }; michael@0: michael@0: NS_DEFINE_STATIC_IID_ACCESSOR(nsIIPCSerializableInputStream, michael@0: NS_IIPCSERIALIZABLEINPUTSTREAM_IID) michael@0: michael@0: #define NS_DECL_NSIIPCSERIALIZABLEINPUTSTREAM \ michael@0: virtual void \ michael@0: Serialize(mozilla::ipc::InputStreamParams&, \ michael@0: FileDescriptorArray&) MOZ_OVERRIDE; \ michael@0: \ michael@0: virtual bool \ michael@0: Deserialize(const mozilla::ipc::InputStreamParams&, \ michael@0: const FileDescriptorArray&) MOZ_OVERRIDE; michael@0: michael@0: #define NS_FORWARD_NSIIPCSERIALIZABLEINPUTSTREAM(_to) \ michael@0: virtual void \ michael@0: Serialize(mozilla::ipc::InputStreamParams& aParams, \ michael@0: FileDescriptorArray& aFileDescriptors) MOZ_OVERRIDE \ michael@0: { \ michael@0: _to Serialize(aParams, aFileDescriptors); \ michael@0: } \ michael@0: \ michael@0: virtual bool \ michael@0: Deserialize(const mozilla::ipc::InputStreamParams& aParams, \ michael@0: const FileDescriptorArray& aFileDescriptors) MOZ_OVERRIDE \ michael@0: { \ michael@0: return _to Deserialize(aParams, aFileDescriptors); \ michael@0: } michael@0: michael@0: #define NS_FORWARD_SAFE_NSIIPCSERIALIZABLEINPUTSTREAM(_to) \ michael@0: virtual void \ michael@0: Serialize(mozilla::ipc::InputStreamParams& aParams, \ michael@0: FileDescriptorArray& aFileDescriptors) MOZ_OVERRIDE \ michael@0: { \ michael@0: if (_to) { \ michael@0: _to->Serialize(aParams, aFileDescriptors); \ michael@0: } \ michael@0: } \ michael@0: \ michael@0: virtual bool \ michael@0: Deserialize(const mozilla::ipc::InputStreamParams& aParams, \ michael@0: const FileDescriptorArray& aFileDescriptors) MOZ_OVERRIDE \ michael@0: { \ michael@0: return _to ? _to->Deserialize(aParams, aFileDescriptors) : false; \ michael@0: } michael@0: michael@0: #endif // mozilla_ipc_nsIIPCSerializableInputStream_h