Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qlocalsocket.h
Go to the documentation of this file.
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
13
14QT_BEGIN_NAMESPACE
15
16class QDebug;
18
19class Q_NETWORK_EXPORT QLocalSocket : public QIODevice
20{
21 Q_OBJECT
22 Q_DECLARE_PRIVATE(QLocalSocket)
23 Q_PROPERTY(SocketOptions socketOptions READ socketOptions WRITE setSocketOptions
24 BINDABLE bindableSocketOptions)
25
26public:
27 enum LocalSocketError
28 {
29 ConnectionRefusedError = QAbstractSocket::ConnectionRefusedError,
30 PeerClosedError = QAbstractSocket::RemoteHostClosedError,
31 ServerNotFoundError = QAbstractSocket::HostNotFoundError,
32 SocketAccessError = QAbstractSocket::SocketAccessError,
33 SocketResourceError = QAbstractSocket::SocketResourceError,
34 SocketTimeoutError = QAbstractSocket::SocketTimeoutError,
35 DatagramTooLargeError = QAbstractSocket::DatagramTooLargeError,
36 ConnectionError = QAbstractSocket::NetworkError,
37 UnsupportedSocketOperationError = QAbstractSocket::UnsupportedSocketOperationError,
38 UnknownSocketError = QAbstractSocket::UnknownSocketError,
39 OperationError = QAbstractSocket::OperationError
40 };
41 Q_ENUM(LocalSocketError)
42
43 enum LocalSocketState
44 {
45 UnconnectedState = QAbstractSocket::UnconnectedState,
46 ConnectingState = QAbstractSocket::ConnectingState,
47 ConnectedState = QAbstractSocket::ConnectedState,
48 ClosingState = QAbstractSocket::ClosingState
49 };
50 Q_ENUM(LocalSocketState)
51
52 enum SocketOption {
53 NoOptions = 0x00,
54 AbstractNamespaceOption = 0x01
55 };
56 Q_DECLARE_FLAGS(SocketOptions, SocketOption)
57 Q_FLAG(SocketOptions)
58
59 QLocalSocket(QObject *parent = nullptr);
60 ~QLocalSocket();
61
62 void connectToServer(OpenMode openMode = ReadWrite);
63 void connectToServer(const QString &name, OpenMode openMode = ReadWrite);
64 void disconnectFromServer();
65
66 void setServerName(const QString &name);
67 QString serverName() const;
68 QString fullServerName() const;
69
70 void abort();
71 virtual bool isSequential() const override;
72 virtual qint64 bytesAvailable() const override;
73 virtual qint64 bytesToWrite() const override;
74 virtual bool canReadLine() const override;
75 virtual bool open(OpenMode openMode = ReadWrite) override;
76 virtual void close() override;
77 LocalSocketError error() const;
78 bool flush();
79 bool isValid() const;
80 qint64 readBufferSize() const;
81 void setReadBufferSize(qint64 size);
82
83 bool setSocketDescriptor(qintptr socketDescriptor,
84 LocalSocketState socketState = ConnectedState,
85 OpenMode openMode = ReadWrite);
86 qintptr socketDescriptor() const;
87
88 void setSocketOptions(SocketOptions option);
89 SocketOptions socketOptions() const;
90 QBindable<SocketOptions> bindableSocketOptions();
91
92 LocalSocketState state() const;
93 bool waitForBytesWritten(int msecs = 30000) override;
94 bool waitForConnected(int msecs = 30000);
95 bool waitForDisconnected(int msecs = 30000);
96 bool waitForReadyRead(int msecs = 30000) override;
97
98Q_SIGNALS:
99 void connected();
100 void disconnected();
101 void errorOccurred(QLocalSocket::LocalSocketError socketError);
102 void stateChanged(QLocalSocket::LocalSocketState socketState);
103
104protected:
105 virtual qint64 readData(char*, qint64) override;
106 qint64 readLineData(char *data, qint64 maxSize) override;
107 qint64 skipData(qint64 maxSize) override;
108 virtual qint64 writeData(const char*, qint64) override;
109
110private:
111 Q_DISABLE_COPY(QLocalSocket)
112#if defined(QT_LOCALSOCKET_TCP)
113 Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState))
114 Q_PRIVATE_SLOT(d_func(), void _q_errorOccurred(QAbstractSocket::SocketError))
115#elif defined(Q_OS_WIN)
116 Q_PRIVATE_SLOT(d_func(), void _q_pipeClosed())
117 Q_PRIVATE_SLOT(d_func(), void _q_winError(ulong, const QString &))
118#else
119 Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState))
120 Q_PRIVATE_SLOT(d_func(), void _q_errorOccurred(QAbstractSocket::SocketError))
121 Q_PRIVATE_SLOT(d_func(), void _q_connectToSocket())
122 Q_PRIVATE_SLOT(d_func(), void _q_abortConnectionAttempt())
123#endif
124};
125
126#if QT_NETWORK_REMOVED_SINCE(6, 12)
127#ifndef QT_NO_DEBUG_STREAM
128Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketError);
129Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketState);
130#endif
131#endif // QT_NETWORK_REMOVED_SINCE(6, 12)
132
133Q_DECLARE_OPERATORS_FOR_FLAGS(QLocalSocket::SocketOptions)
134
135QT_END_NAMESPACE
136
137#endif // QLOCALSOCKET_H
The QLocalServer class provides a local socket based server.
The QLocalSocket class provides a local socket.
QT_REQUIRE_CONFIG(animation)
QT_REQUIRE_CONFIG(localserver)