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
42 enum LocalSocketState
43 {
44 UnconnectedState = QAbstractSocket::UnconnectedState,
45 ConnectingState = QAbstractSocket::ConnectingState,
46 ConnectedState = QAbstractSocket::ConnectedState,
47 ClosingState = QAbstractSocket::ClosingState
48 };
49
50 enum SocketOption {
51 NoOptions = 0x00,
52 AbstractNamespaceOption = 0x01
53 };
54 Q_DECLARE_FLAGS(SocketOptions, SocketOption)
55 Q_FLAG(SocketOptions)
56
57 QLocalSocket(QObject *parent = nullptr);
58 ~QLocalSocket();
59
60 void connectToServer(OpenMode openMode = ReadWrite);
61 void connectToServer(const QString &name, OpenMode openMode = ReadWrite);
62 void disconnectFromServer();
63
64 void setServerName(const QString &name);
65 QString serverName() const;
66 QString fullServerName() const;
67
68 void abort();
69 virtual bool isSequential() const override;
70 virtual qint64 bytesAvailable() const override;
71 virtual qint64 bytesToWrite() const override;
72 virtual bool canReadLine() const override;
73 virtual bool open(OpenMode openMode = ReadWrite) override;
74 virtual void close() override;
75 LocalSocketError error() const;
76 bool flush();
77 bool isValid() const;
78 qint64 readBufferSize() const;
79 void setReadBufferSize(qint64 size);
80
81 bool setSocketDescriptor(qintptr socketDescriptor,
82 LocalSocketState socketState = ConnectedState,
83 OpenMode openMode = ReadWrite);
84 qintptr socketDescriptor() const;
85
86 void setSocketOptions(SocketOptions option);
87 SocketOptions socketOptions() const;
88 QBindable<SocketOptions> bindableSocketOptions();
89
90 LocalSocketState state() const;
91 bool waitForBytesWritten(int msecs = 30000) override;
92 bool waitForConnected(int msecs = 30000);
93 bool waitForDisconnected(int msecs = 30000);
94 bool waitForReadyRead(int msecs = 30000) override;
95
96Q_SIGNALS:
97 void connected();
98 void disconnected();
99 void errorOccurred(QLocalSocket::LocalSocketError socketError);
100 void stateChanged(QLocalSocket::LocalSocketState socketState);
101
102protected:
103 virtual qint64 readData(char*, qint64) override;
104 qint64 readLineData(char *data, qint64 maxSize) override;
105 qint64 skipData(qint64 maxSize) override;
106 virtual qint64 writeData(const char*, qint64) override;
107
108private:
109 Q_DISABLE_COPY(QLocalSocket)
110#if defined(QT_LOCALSOCKET_TCP)
111 Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState))
112 Q_PRIVATE_SLOT(d_func(), void _q_errorOccurred(QAbstractSocket::SocketError))
113#elif defined(Q_OS_WIN)
114 Q_PRIVATE_SLOT(d_func(), void _q_pipeClosed())
115 Q_PRIVATE_SLOT(d_func(), void _q_winError(ulong, const QString &))
116#else
117 Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState))
118 Q_PRIVATE_SLOT(d_func(), void _q_errorOccurred(QAbstractSocket::SocketError))
119 Q_PRIVATE_SLOT(d_func(), void _q_connectToSocket())
120 Q_PRIVATE_SLOT(d_func(), void _q_abortConnectionAttempt())
121#endif
122};
123
124#ifndef QT_NO_DEBUG_STREAM
125Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketError);
126Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketState);
127#endif
128
129Q_DECLARE_OPERATORS_FOR_FLAGS(QLocalSocket::SocketOptions)
130
131QT_END_NAMESPACE
132
133#endif // QLOCALSOCKET_H
The QLocalServer class provides a local socket based server.
The QLocalSocket class provides a local socket.
QT_REQUIRE_CONFIG(animation)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2568
QT_REQUIRE_CONFIG(localserver)