1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
3 * You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef mozilla_ipc_nsIIPCSerializableInputStream_h
6 #define mozilla_ipc_nsIIPCSerializableInputStream_h
8 #include "nsISupports.h"
9 #include "mozilla/Attributes.h"
11 struct nsTArrayDefaultAllocator
;
12 template <class> class nsTArray
;
18 class InputStreamParams
;
21 } // namespace mozilla
23 #define NS_IIPCSERIALIZABLEINPUTSTREAM_IID \
24 {0xb0211b14, 0xea6d, 0x40d4, {0x87, 0xb5, 0x7b, 0xe3, 0xdf, 0xac, 0x09, 0xd1}}
26 class NS_NO_VTABLE nsIIPCSerializableInputStream
: public nsISupports
29 typedef nsTArray
<mozilla::ipc::FileDescriptor
>
32 NS_DECLARE_STATIC_IID_ACCESSOR(NS_IIPCSERIALIZABLEINPUTSTREAM_IID
)
35 Serialize(mozilla::ipc::InputStreamParams
& aParams
,
36 FileDescriptorArray
& aFileDescriptors
) = 0;
39 Deserialize(const mozilla::ipc::InputStreamParams
& aParams
,
40 const FileDescriptorArray
& aFileDescriptors
) = 0;
43 NS_DEFINE_STATIC_IID_ACCESSOR(nsIIPCSerializableInputStream
,
44 NS_IIPCSERIALIZABLEINPUTSTREAM_IID
)
46 #define NS_DECL_NSIIPCSERIALIZABLEINPUTSTREAM \
48 Serialize(mozilla::ipc::InputStreamParams&, \
49 FileDescriptorArray&) override; \
52 Deserialize(const mozilla::ipc::InputStreamParams&, \
53 const FileDescriptorArray&) override;
55 #define NS_FORWARD_NSIIPCSERIALIZABLEINPUTSTREAM(_to) \
57 Serialize(mozilla::ipc::InputStreamParams& aParams, \
58 FileDescriptorArray& aFileDescriptors) override \
60 _to Serialize(aParams, aFileDescriptors); \
64 Deserialize(const mozilla::ipc::InputStreamParams& aParams, \
65 const FileDescriptorArray& aFileDescriptors) override \
67 return _to Deserialize(aParams, aFileDescriptors); \
70 #define NS_FORWARD_SAFE_NSIIPCSERIALIZABLEINPUTSTREAM(_to) \
72 Serialize(mozilla::ipc::InputStreamParams& aParams, \
73 FileDescriptorArray& aFileDescriptors) override \
76 _to->Serialize(aParams, aFileDescriptors); \
81 Deserialize(const mozilla::ipc::InputStreamParams& aParams, \
82 const FileDescriptorArray& aFileDescriptors) override \
84 return _to ? _to->Deserialize(aParams, aFileDescriptors) : false; \
87 #endif // mozilla_ipc_nsIIPCSerializableInputStream_h