Qt Cryptographic Architecture
include
QtCrypto
qpipe.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2003-2007 Justin Karneges <justin@affinix.com>
3
*
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2.1 of the License, or (at your option) any later version.
8
*
9
* This library is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Lesser General Public License for more details.
13
*
14
* You should have received a copy of the GNU Lesser General Public
15
* License along with this library; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17
* 02110-1301 USA
18
*
19
*/
20
31
#ifndef QPIPE_H
32
#define QPIPE_H
33
34
#ifndef DOXYGEN_SHOULD_SKIP_THIS
35
36
#ifndef QPIPE_NO_SECURE
37
# define QPIPE_SECURE
38
#endif
39
40
#ifdef QPIPE_SECURE
41
# include "QtCrypto"
42
#else
43
# define QCA_EXPORT
44
#endif
45
46
// defs adapted qprocess_p.h
47
#ifdef Q_OS_WIN
48
#include <windows.h>
49
typedef
HANDLE Q_PIPE_ID;
50
#define INVALID_Q_PIPE_ID INVALID_HANDLE_VALUE
51
#else
52
typedef
int
Q_PIPE_ID;
53
#define INVALID_Q_PIPE_ID -1
54
#endif
55
56
#endif
57
58
// Note: for Windows console, I/O must be in UTF-8. Reads are guaranteed to
59
// to completely decode (no partial characters). Likewise, writes must
60
// not contain partial characters.
61
62
namespace
QCA
{
63
64
75
class
QCA_EXPORT
QPipeDevice
:
public
QObject
76
{
77
Q_OBJECT
78
public
:
82
enum
Type
83
{
84
Read
,
85
Write
86
};
87
93
QPipeDevice
(
QObject
*parent =
nullptr
);
94
~
QPipeDevice
()
override
;
95
99
Type type()
const
;
100
104
bool
isValid()
const
;
105
115
Q_PIPE_ID id()
const
;
116
124
int
idAsInt()
const
;
125
132
void
take(Q_PIPE_ID
id
, Type t);
133
137
void
enable();
138
142
void
close();
143
147
void
release();
148
156
bool
setInheritable(
bool
enabled);
157
161
int
bytesAvailable()
const
;
162
171
int
read(
char
*data,
int
maxsize);
172
183
int
write(
const
char
*data,
int
size);
184
193
int
writeResult(
int
*written)
const
;
194
195
Q_SIGNALS:
199
void
notify();
200
201
private
:
202
Q_DISABLE_COPY(
QPipeDevice
)
203
204
class
Private;
205
friend
class
Private;
206
Private *d;
207
};
208
218
class
QCA_EXPORT
QPipeEnd
:
public
QObject
219
{
220
Q_OBJECT
221
public
:
222
226
enum
Error
227
{
228
ErrorEOF
,
229
ErrorBroken
230
};
231
237
QPipeEnd
(
QObject
*parent =
nullptr
);
238
239
~
QPipeEnd
()
override
;
240
244
void
reset();
245
249
QPipeDevice::Type
type()
const
;
250
257
bool
isValid()
const
;
258
262
Q_PIPE_ID id()
const
;
263
267
int
idAsInt()
const
;
268
275
void
take(Q_PIPE_ID
id
,
QPipeDevice::Type
t);
276
277
#ifdef QPIPE_SECURE
278
286
void
setSecurityEnabled(
bool
secure);
287
#endif
288
295
void
enable();
296
302
void
close();
303
310
void
release();
311
320
bool
setInheritable(
bool
enabled);
321
325
void
finalize();
326
330
void
finalizeAndRelease();
331
340
int
bytesAvailable()
const
;
341
350
int
bytesToWrite()
const
;
351
362
QByteArray read(
int
bytes = -1);
363
373
void
write(
const
QByteArray &a);
374
375
#ifdef QPIPE_SECURE
376
386
SecureArray
readSecure(
int
bytes = -1);
387
397
void
writeSecure(
const
SecureArray
&a);
398
#endif
399
406
QByteArray takeBytesToWrite();
407
408
#ifdef QPIPE_SECURE
409
415
SecureArray
takeBytesToWriteSecure();
416
#endif
417
418
Q_SIGNALS:
425
void
readyRead();
426
433
void
bytesWritten(
int
bytes);
434
446
void
closed();
447
454
void
error(
QCA::QPipeEnd::Error
e);
455
456
private
:
457
Q_DISABLE_COPY(
QPipeEnd
)
458
459
class
Private;
460
friend
class
Private;
461
Private *d;
462
};
463
480
class
QCA_EXPORT
QPipe
481
{
482
public
:
490
QPipe
(
QObject
*parent =
nullptr
);
491
492
~
QPipe
();
493
500
void
reset();
501
502
#ifdef QPIPE_SECURE
503
508
bool
create(
bool
secure =
false
);
509
#else
510
513
bool
create();
514
#endif
515
519
QPipeEnd
&
readEnd
() {
return
i; }
520
524
QPipeEnd
&
writeEnd
() {
return
o; }
525
526
private
:
527
Q_DISABLE_COPY(
QPipe
)
528
529
QPipeEnd
i, o;
530
};
531
532
}
533
534
#endif
QObject
QCA::QPipeDevice
Definition:
qpipe.h:75
QCA::QPipeDevice::Type
Type
The type of device.
Definition:
qpipe.h:82
QCA::QPipe
Definition:
qpipe.h:480
QCA
QCA - the Qt Cryptographic Architecture.
Definition:
qca_basic.h:41
QCA::QPipeEnd::ErrorEOF
@ ErrorEOF
End of file error.
Definition:
qpipe.h:228
QCA::QPipe::readEnd
QPipeEnd & readEnd()
The read end of the pipe.
Definition:
qpipe.h:519
QCA::QPipeEnd
Definition:
qpipe.h:218
QCA::SecureArray
Definition:
qca_tools.h:316
QCA::QPipeDevice::Read
@ Read
The pipe end can be read from.
Definition:
qpipe.h:84
QCA::QPipe::writeEnd
QPipeEnd & writeEnd()
The write end of the pipe.
Definition:
qpipe.h:524
QCA::QPipeEnd::Error
Error
The type of error.
Definition:
qpipe.h:226
Generated by
1.8.17