/src/qtbase/src/network/socket/qlocalsocket.h
Line | Count | Source |
1 | | // Copyright (C) 2016 The Qt Company Ltd. |
2 | | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only |
3 | | // Qt-Security score:significant reason:default |
4 | | |
5 | | #ifndef QLOCALSOCKET_H |
6 | | #define QLOCALSOCKET_H |
7 | | |
8 | | #include <QtNetwork/qtnetworkglobal.h> |
9 | | #include <QtCore/qiodevice.h> |
10 | | #include <QtNetwork/qabstractsocket.h> |
11 | | |
12 | | QT_REQUIRE_CONFIG(localserver); |
13 | | |
14 | | QT_BEGIN_NAMESPACE |
15 | | |
16 | | class QDebug; |
17 | | class QLocalSocketPrivate; |
18 | | |
19 | | class Q_NETWORK_EXPORT QLocalSocket : public QIODevice |
20 | | { |
21 | 0 | Q_OBJECT |
22 | 0 | Q_DECLARE_PRIVATE(QLocalSocket) Unexecuted instantiation: QLocalSocket::d_func() Unexecuted instantiation: QLocalSocket::d_func() const |
23 | 0 | Q_PROPERTY(SocketOptions socketOptions READ socketOptions WRITE setSocketOptions |
24 | 0 | BINDABLE bindableSocketOptions) |
25 | 0 |
|
26 | 0 | public: |
27 | 0 | enum LocalSocketError |
28 | 0 | { |
29 | 0 | ConnectionRefusedError = QAbstractSocket::ConnectionRefusedError, |
30 | 0 | PeerClosedError = QAbstractSocket::RemoteHostClosedError, |
31 | 0 | ServerNotFoundError = QAbstractSocket::HostNotFoundError, |
32 | 0 | SocketAccessError = QAbstractSocket::SocketAccessError, |
33 | 0 | SocketResourceError = QAbstractSocket::SocketResourceError, |
34 | 0 | SocketTimeoutError = QAbstractSocket::SocketTimeoutError, |
35 | 0 | DatagramTooLargeError = QAbstractSocket::DatagramTooLargeError, |
36 | 0 | ConnectionError = QAbstractSocket::NetworkError, |
37 | 0 | UnsupportedSocketOperationError = QAbstractSocket::UnsupportedSocketOperationError, |
38 | 0 | UnknownSocketError = QAbstractSocket::UnknownSocketError, |
39 | 0 | OperationError = QAbstractSocket::OperationError |
40 | 0 | }; |
41 | 0 | Q_ENUM(LocalSocketError) |
42 | 0 |
|
43 | 0 | enum LocalSocketState |
44 | 0 | { |
45 | 0 | UnconnectedState = QAbstractSocket::UnconnectedState, |
46 | 0 | ConnectingState = QAbstractSocket::ConnectingState, |
47 | 0 | ConnectedState = QAbstractSocket::ConnectedState, |
48 | 0 | ClosingState = QAbstractSocket::ClosingState |
49 | 0 | }; |
50 | 0 | Q_ENUM(LocalSocketState) |
51 | 0 |
|
52 | 0 | enum SocketOption { |
53 | 0 | NoOptions = 0x00, |
54 | 0 | AbstractNamespaceOption = 0x01 |
55 | 0 | }; |
56 | 0 | Q_DECLARE_FLAGS(SocketOptions, SocketOption) |
57 | 0 | Q_FLAG(SocketOptions) Unexecuted instantiation: qt_getEnumMetaObject(QFlags<QLocalSocket::SocketOption>) Unexecuted instantiation: qt_getEnumName(QFlags<QLocalSocket::SocketOption>) |
58 | 0 |
|
59 | 0 | QLocalSocket(QObject *parent = nullptr); |
60 | 0 | ~QLocalSocket(); |
61 | 0 |
|
62 | 0 | void connectToServer(OpenMode openMode = ReadWrite); |
63 | 0 | void connectToServer(const QString &name, OpenMode openMode = ReadWrite); |
64 | 0 | void disconnectFromServer(); |
65 | 0 |
|
66 | 0 | void setServerName(const QString &name); |
67 | 0 | QString serverName() const; |
68 | 0 | QString fullServerName() const; |
69 | 0 |
|
70 | 0 | void abort(); |
71 | 0 | virtual bool isSequential() const override; |
72 | 0 | virtual qint64 bytesAvailable() const override; |
73 | 0 | virtual qint64 bytesToWrite() const override; |
74 | 0 | virtual bool canReadLine() const override; |
75 | 0 | virtual bool open(OpenMode openMode = ReadWrite) override; |
76 | 0 | virtual void close() override; |
77 | 0 | LocalSocketError error() const; |
78 | 0 | bool flush(); |
79 | 0 | bool isValid() const; |
80 | 0 | qint64 readBufferSize() const; |
81 | 0 | void setReadBufferSize(qint64 size); |
82 | 0 |
|
83 | 0 | bool setSocketDescriptor(qintptr socketDescriptor, |
84 | 0 | LocalSocketState socketState = ConnectedState, |
85 | 0 | OpenMode openMode = ReadWrite); |
86 | 0 | qintptr socketDescriptor() const; |
87 | 0 |
|
88 | 0 | void setSocketOptions(SocketOptions option); |
89 | 0 | SocketOptions socketOptions() const; |
90 | 0 | QBindable<SocketOptions> bindableSocketOptions(); |
91 | 0 |
|
92 | 0 | LocalSocketState state() const; |
93 | 0 |
|
94 | 0 | using QIODevice::waitForBytesWritten; |
95 | 0 | using QIODevice::waitForReadyRead; |
96 | 0 | bool waitForBytesWritten(QDeadlineTimer deadline = std::chrono::seconds(30)) QT7_ONLY(override); |
97 | 0 | bool waitForConnected(QDeadlineTimer deadline = std::chrono::seconds(30)); |
98 | 0 | bool waitForDisconnected(QDeadlineTimer deadline = std::chrono::seconds(30)); |
99 | 0 | bool waitForReadyRead(QDeadlineTimer deadline = std::chrono::seconds(30)) QT7_ONLY(override); |
100 | 0 |
|
101 | 0 | #if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) |
102 | 0 | QT_NETWORK_INLINE_SINCE(6, 13) |
103 | 0 | bool waitForBytesWritten(int msecs) override; |
104 | 0 | #endif |
105 | 0 | QT_NETWORK_INLINE_SINCE(6, 13) |
106 | 0 | bool waitForConnected(int msecs); |
107 | 0 | QT_NETWORK_INLINE_SINCE(6, 13) |
108 | 0 | bool waitForDisconnected(int msecs); |
109 | 0 | #if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) |
110 | 0 | QT_NETWORK_INLINE_SINCE(6, 13) |
111 | 0 | bool waitForReadyRead(int msecs) override; |
112 | 0 | #endif |
113 | 0 |
|
114 | 0 | Q_SIGNALS: |
115 | 0 | void connected(); |
116 | 0 | void disconnected(); |
117 | 0 | void errorOccurred(QLocalSocket::LocalSocketError socketError); |
118 | 0 | void stateChanged(QLocalSocket::LocalSocketState socketState); |
119 | 0 |
|
120 | 0 | protected: |
121 | 0 | virtual qint64 readData(char*, qint64) override; |
122 | 0 | qint64 readLineData(char *data, qint64 maxSize) override; |
123 | 0 | qint64 skipData(qint64 maxSize) override; |
124 | 0 | virtual qint64 writeData(const char*, qint64) override; |
125 | 0 |
|
126 | 0 | private: |
127 | 0 | Q_DISABLE_COPY(QLocalSocket) |
128 | 0 | #if defined(QT_LOCALSOCKET_TCP) |
129 | 0 | Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState)) |
130 | 0 | Q_PRIVATE_SLOT(d_func(), void _q_errorOccurred(QAbstractSocket::SocketError)) |
131 | 0 | #elif defined(Q_OS_WIN) |
132 | 0 | Q_PRIVATE_SLOT(d_func(), void _q_pipeClosed()) |
133 | 0 | Q_PRIVATE_SLOT(d_func(), void _q_winError(ulong, const QString &)) |
134 | 0 | #else |
135 | 0 | Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState)) |
136 | 0 | Q_PRIVATE_SLOT(d_func(), void _q_errorOccurred(QAbstractSocket::SocketError)) |
137 | 0 | Q_PRIVATE_SLOT(d_func(), void _q_connectToSocket()) |
138 | 0 | Q_PRIVATE_SLOT(d_func(), void _q_abortConnectionAttempt()) |
139 | 0 | #endif |
140 | 0 | }; |
141 | 0 |
|
142 | 0 | #if QT_NETWORK_REMOVED_SINCE(6, 12) |
143 | 0 | #ifndef QT_NO_DEBUG_STREAM |
144 | 0 | Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketError); |
145 | 0 | Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketState); |
146 | 0 | #endif |
147 | 0 | #endif // QT_NETWORK_REMOVED_SINCE(6, 12) |
148 | 0 |
|
149 | 0 | Q_DECLARE_OPERATORS_FOR_FLAGS(QLocalSocket::SocketOptions) Unexecuted instantiation: operator|(QLocalSocket::SocketOption, QLocalSocket::SocketOption) Unexecuted instantiation: operator|(QLocalSocket::SocketOption, QFlags<QLocalSocket::SocketOption>) Unexecuted instantiation: operator&(QLocalSocket::SocketOption, QLocalSocket::SocketOption) Unexecuted instantiation: operator&(QLocalSocket::SocketOption, QFlags<QLocalSocket::SocketOption>) Unexecuted instantiation: operator^(QLocalSocket::SocketOption, QLocalSocket::SocketOption) Unexecuted instantiation: operator^(QLocalSocket::SocketOption, QFlags<QLocalSocket::SocketOption>) Unexecuted instantiation: operator|(QLocalSocket::SocketOption, int) |
150 | 0 |
|
151 | 0 | #if QT_NETWORK_INLINE_IMPL_SINCE(6, 13) |
152 | 0 | bool QLocalSocket::waitForConnected(int msecs) |
153 | 0 | { return waitForConnected(QDeadlineTimer(msecs)); } |
154 | | bool QLocalSocket::waitForDisconnected(int msecs) |
155 | 0 | { return waitForDisconnected(QDeadlineTimer(msecs)); } |
156 | | #endif |
157 | | #if QT_NETWORK_INLINE_IMPL_SINCE(6, 13) && QT_VERSION < QT_VERSION_CHECK(7, 0, 0) |
158 | | bool QLocalSocket::waitForBytesWritten(int msecs) |
159 | 0 | { return waitForBytesWritten(QDeadlineTimer(msecs)); } |
160 | | bool QLocalSocket::waitForReadyRead(int msecs) |
161 | 0 | { return waitForReadyRead(QDeadlineTimer(msecs)); } |
162 | | #endif |
163 | | |
164 | | QT_END_NAMESPACE |
165 | | |
166 | | #endif // QLOCALSOCKET_H |