Coverage Report

Created: 2026-10-28 07:09

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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