9# include <private/qcore_unix_p.h>
16QT_IMPL_METATYPE_EXTERN(QDBusUnixFileDescriptor)
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
73
74
75
78
79
80
82class QDBusUnixFileDescriptorPrivate :
public QSharedData {
84 QDBusUnixFileDescriptorPrivate() : fd(-1) { }
85 QDBusUnixFileDescriptorPrivate(
const QDBusUnixFileDescriptorPrivate &other)
86 : QSharedData(other), fd(-1)
88 ~QDBusUnixFileDescriptorPrivate();
93QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QDBusUnixFileDescriptorPrivate)
96
97
98
99
100
101
102QDBusUnixFileDescriptor::QDBusUnixFileDescriptor()
108
109
110
111
112
113
114
115
116
117
118
119
120QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(
int fileDescriptor)
123 if (fileDescriptor != -1)
124 setFileDescriptor(fileDescriptor);
128
129
130QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(
const QDBusUnixFileDescriptor &other)
136
137
138
139
140QDBusUnixFileDescriptor &QDBusUnixFileDescriptor::operator=(
const QDBusUnixFileDescriptor &other)
143 d.operator=(other.d);
148
149
150
151
154
155
156QDBusUnixFileDescriptor::~QDBusUnixFileDescriptor()
161
162
163
164
167
168
169
170
171
172bool QDBusUnixFileDescriptor::isValid()
const
174 return d ? d->fd.loadRelaxed() != -1 :
false;
178
179
180
181
182
183
184
185
186
187
188
189
190int QDBusUnixFileDescriptor::fileDescriptor()
const
192 return d ? d->fd.loadRelaxed() : -1;
201
202
203
204
205
206
207
208
209
210bool QDBusUnixFileDescriptor::isSupported()
216
217
218
219
220
221
222
223
224
225
226
227
228void QDBusUnixFileDescriptor::setFileDescriptor(
int fileDescriptor)
230 if (fileDescriptor != -1)
231 giveFileDescriptor(qt_safe_dup(fileDescriptor));
235
236
237
238
239
240void QDBusUnixFileDescriptor::giveFileDescriptor(
int fileDescriptor)
247 d =
new QDBusUnixFileDescriptorPrivate;
249 const int fdl = d->fd.loadRelaxed();
253 if (fileDescriptor != -1)
254 d->fd.storeRelaxed(fileDescriptor);
258
259
260
261
262
263
264
265int QDBusUnixFileDescriptor::takeFileDescriptor()
270 return d->fd.fetchAndStoreRelaxed(-1);
273QDBusUnixFileDescriptorPrivate::~QDBusUnixFileDescriptorPrivate()
275 const int fdl = fd.loadRelaxed();
281bool QDBusUnixFileDescriptor::isSupported()
286void QDBusUnixFileDescriptor::setFileDescriptor(
int)
290void QDBusUnixFileDescriptor::giveFileDescriptor(
int)
294int QDBusUnixFileDescriptor::takeFileDescriptor()
299QDBusUnixFileDescriptorPrivate::~QDBusUnixFileDescriptorPrivate()