Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/ipc/glue/nsIIPCSerializableInputStream.h
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5
 * You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#ifndef mozilla_ipc_nsIIPCSerializableInputStream_h
8
#define mozilla_ipc_nsIIPCSerializableInputStream_h
9
10
#include "mozilla/Attributes.h"
11
#include "mozilla/Maybe.h"
12
#include "nsISupports.h"
13
#include "nsTArrayForwardDeclare.h"
14
15
namespace mozilla {
16
namespace ipc {
17
18
class FileDescriptor;
19
class InputStreamParams;
20
21
} // namespace ipc
22
} // namespace mozilla
23
24
#define NS_IIPCSERIALIZABLEINPUTSTREAM_IID \
25
  {0xb0211b14, 0xea6d, 0x40d4, {0x87, 0xb5, 0x7b, 0xe3, 0xdf, 0xac, 0x09, 0xd1}}
26
27
class NS_NO_VTABLE nsIIPCSerializableInputStream : public nsISupports
28
{
29
public:
30
  typedef nsTArray<mozilla::ipc::FileDescriptor>
31
          FileDescriptorArray;
32
33
  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IIPCSERIALIZABLEINPUTSTREAM_IID)
34
35
  virtual void
36
  Serialize(mozilla::ipc::InputStreamParams& aParams,
37
            FileDescriptorArray& aFileDescriptors) = 0;
38
39
  virtual bool
40
  Deserialize(const mozilla::ipc::InputStreamParams& aParams,
41
              const FileDescriptorArray& aFileDescriptors) = 0;
42
43
  // The number of bytes that are expected to be written when this
44
  // stream is serialized. A value of Some(N) indicates that N bytes
45
  // will be written to the IPC buffer, and will be used to decide
46
  // upon an optimal transmission mechanism. A value of Nothing
47
  // indicates that either serializing this stream will not require
48
  // serializing its contents (eg. a file-backed stream, or a stream
49
  // backed by an IPC actor), or the length of the stream's contents
50
  // cannot be determined.
51
  virtual mozilla::Maybe<uint64_t>
52
  ExpectedSerializedLength() = 0;
53
};
54
55
NS_DEFINE_STATIC_IID_ACCESSOR(nsIIPCSerializableInputStream,
56
                              NS_IIPCSERIALIZABLEINPUTSTREAM_IID)
57
58
#define NS_DECL_NSIIPCSERIALIZABLEINPUTSTREAM                                  \
59
  virtual void                                                                 \
60
  Serialize(mozilla::ipc::InputStreamParams&,                                  \
61
            FileDescriptorArray&) override;                                    \
62
                                                                               \
63
  virtual bool                                                                 \
64
  Deserialize(const mozilla::ipc::InputStreamParams&,                          \
65
              const FileDescriptorArray&) override;                            \
66
                                                                               \
67
  virtual mozilla::Maybe<uint64_t>                                             \
68
  ExpectedSerializedLength() override;
69
70
#define NS_FORWARD_NSIIPCSERIALIZABLEINPUTSTREAM(_to)                          \
71
  virtual void                                                                 \
72
  Serialize(mozilla::ipc::InputStreamParams& aParams,                          \
73
            FileDescriptorArray& aFileDescriptors) override                    \
74
0
  {                                                                            \
75
0
    _to Serialize(aParams, aFileDescriptors);                                  \
76
0
  }                                                                            \
77
                                                                               \
78
  virtual bool                                                                 \
79
  Deserialize(const mozilla::ipc::InputStreamParams& aParams,                  \
80
              const FileDescriptorArray& aFileDescriptors) override            \
81
0
  {                                                                            \
82
0
    return _to Deserialize(aParams, aFileDescriptors);                         \
83
0
  }                                                                            \
84
                                                                               \
85
  virtual mozilla::Maybe<uint64_t>                                             \
86
  ExpectedSerializedLength() override                                          \
87
0
  {                                                                            \
88
0
    return _to ExpectedSerializedLength();                                     \
89
0
  }
90
91
#define NS_FORWARD_SAFE_NSIIPCSERIALIZABLEINPUTSTREAM(_to)                     \
92
  virtual void                                                                 \
93
  Serialize(mozilla::ipc::InputStreamParams& aParams,                          \
94
            FileDescriptorArray& aFileDescriptors) override                    \
95
  {                                                                            \
96
    if (_to) {                                                                 \
97
      _to->Serialize(aParams, aFileDescriptors);                               \
98
    }                                                                          \
99
  }                                                                            \
100
                                                                               \
101
  virtual bool                                                                 \
102
  Deserialize(const mozilla::ipc::InputStreamParams& aParams,                  \
103
              const FileDescriptorArray& aFileDescriptors) override            \
104
  {                                                                            \
105
    return _to ? _to->Deserialize(aParams, aFileDescriptors) : false;          \
106
  }                                                                            \
107
                                                                               \
108
  virtual mozilla::Maybe<uint64_t>                                             \
109
  ExpectedSerializedLength() override                                          \
110
  {                                                                            \
111
    return _to ? _to->ExpectedSerializedLength() : Nothing();                  \
112
  }
113
114
#endif // mozilla_ipc_nsIIPCSerializableInputStream_h