|
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/. */ |
|
4 |
|
5 #ifndef mozilla_ipc_nsIIPCSerializableInputStream_h |
|
6 #define mozilla_ipc_nsIIPCSerializableInputStream_h |
|
7 |
|
8 #include "nsISupports.h" |
|
9 #include "mozilla/Attributes.h" |
|
10 |
|
11 struct nsTArrayDefaultAllocator; |
|
12 template <class> class nsTArray; |
|
13 |
|
14 namespace mozilla { |
|
15 namespace ipc { |
|
16 |
|
17 class FileDescriptor; |
|
18 class InputStreamParams; |
|
19 |
|
20 } // namespace ipc |
|
21 } // namespace mozilla |
|
22 |
|
23 #define NS_IIPCSERIALIZABLEINPUTSTREAM_IID \ |
|
24 {0xb0211b14, 0xea6d, 0x40d4, {0x87, 0xb5, 0x7b, 0xe3, 0xdf, 0xac, 0x09, 0xd1}} |
|
25 |
|
26 class NS_NO_VTABLE nsIIPCSerializableInputStream : public nsISupports |
|
27 { |
|
28 public: |
|
29 typedef nsTArray<mozilla::ipc::FileDescriptor> |
|
30 FileDescriptorArray; |
|
31 |
|
32 NS_DECLARE_STATIC_IID_ACCESSOR(NS_IIPCSERIALIZABLEINPUTSTREAM_IID) |
|
33 |
|
34 virtual void |
|
35 Serialize(mozilla::ipc::InputStreamParams& aParams, |
|
36 FileDescriptorArray& aFileDescriptors) = 0; |
|
37 |
|
38 virtual bool |
|
39 Deserialize(const mozilla::ipc::InputStreamParams& aParams, |
|
40 const FileDescriptorArray& aFileDescriptors) = 0; |
|
41 }; |
|
42 |
|
43 NS_DEFINE_STATIC_IID_ACCESSOR(nsIIPCSerializableInputStream, |
|
44 NS_IIPCSERIALIZABLEINPUTSTREAM_IID) |
|
45 |
|
46 #define NS_DECL_NSIIPCSERIALIZABLEINPUTSTREAM \ |
|
47 virtual void \ |
|
48 Serialize(mozilla::ipc::InputStreamParams&, \ |
|
49 FileDescriptorArray&) MOZ_OVERRIDE; \ |
|
50 \ |
|
51 virtual bool \ |
|
52 Deserialize(const mozilla::ipc::InputStreamParams&, \ |
|
53 const FileDescriptorArray&) MOZ_OVERRIDE; |
|
54 |
|
55 #define NS_FORWARD_NSIIPCSERIALIZABLEINPUTSTREAM(_to) \ |
|
56 virtual void \ |
|
57 Serialize(mozilla::ipc::InputStreamParams& aParams, \ |
|
58 FileDescriptorArray& aFileDescriptors) MOZ_OVERRIDE \ |
|
59 { \ |
|
60 _to Serialize(aParams, aFileDescriptors); \ |
|
61 } \ |
|
62 \ |
|
63 virtual bool \ |
|
64 Deserialize(const mozilla::ipc::InputStreamParams& aParams, \ |
|
65 const FileDescriptorArray& aFileDescriptors) MOZ_OVERRIDE \ |
|
66 { \ |
|
67 return _to Deserialize(aParams, aFileDescriptors); \ |
|
68 } |
|
69 |
|
70 #define NS_FORWARD_SAFE_NSIIPCSERIALIZABLEINPUTSTREAM(_to) \ |
|
71 virtual void \ |
|
72 Serialize(mozilla::ipc::InputStreamParams& aParams, \ |
|
73 FileDescriptorArray& aFileDescriptors) MOZ_OVERRIDE \ |
|
74 { \ |
|
75 if (_to) { \ |
|
76 _to->Serialize(aParams, aFileDescriptors); \ |
|
77 } \ |
|
78 } \ |
|
79 \ |
|
80 virtual bool \ |
|
81 Deserialize(const mozilla::ipc::InputStreamParams& aParams, \ |
|
82 const FileDescriptorArray& aFileDescriptors) MOZ_OVERRIDE \ |
|
83 { \ |
|
84 return _to ? _to->Deserialize(aParams, aFileDescriptors) : false; \ |
|
85 } |
|
86 |
|
87 #endif // mozilla_ipc_nsIIPCSerializableInputStream_h |