mirror of
https://github.com/NohamR/RMHook-Win.git
synced 2026-05-25 12:27:12 +00:00
136 lines
4.7 KiB
C++
136 lines
4.7 KiB
C++
// Copyright (C) 2016 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
|
|
|
#ifndef QLOCALSOCKET_H
|
|
#define QLOCALSOCKET_H
|
|
|
|
#include <QtNetwork/qtnetworkglobal.h>
|
|
#include <QtCore/qiodevice.h>
|
|
#include <QtNetwork/qabstractsocket.h>
|
|
|
|
#ifndef QT_NO_DEBUG_STREAM
|
|
#include <QtCore/qdebug.h>
|
|
#endif
|
|
|
|
QT_REQUIRE_CONFIG(localserver);
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
class QLocalSocketPrivate;
|
|
|
|
class Q_NETWORK_EXPORT QLocalSocket : public QIODevice
|
|
{
|
|
Q_OBJECT
|
|
Q_DECLARE_PRIVATE(QLocalSocket)
|
|
Q_PROPERTY(SocketOptions socketOptions READ socketOptions WRITE setSocketOptions
|
|
BINDABLE bindableSocketOptions)
|
|
|
|
public:
|
|
enum LocalSocketError
|
|
{
|
|
ConnectionRefusedError = QAbstractSocket::ConnectionRefusedError,
|
|
PeerClosedError = QAbstractSocket::RemoteHostClosedError,
|
|
ServerNotFoundError = QAbstractSocket::HostNotFoundError,
|
|
SocketAccessError = QAbstractSocket::SocketAccessError,
|
|
SocketResourceError = QAbstractSocket::SocketResourceError,
|
|
SocketTimeoutError = QAbstractSocket::SocketTimeoutError,
|
|
DatagramTooLargeError = QAbstractSocket::DatagramTooLargeError,
|
|
ConnectionError = QAbstractSocket::NetworkError,
|
|
UnsupportedSocketOperationError = QAbstractSocket::UnsupportedSocketOperationError,
|
|
UnknownSocketError = QAbstractSocket::UnknownSocketError,
|
|
OperationError = QAbstractSocket::OperationError
|
|
};
|
|
|
|
enum LocalSocketState
|
|
{
|
|
UnconnectedState = QAbstractSocket::UnconnectedState,
|
|
ConnectingState = QAbstractSocket::ConnectingState,
|
|
ConnectedState = QAbstractSocket::ConnectedState,
|
|
ClosingState = QAbstractSocket::ClosingState
|
|
};
|
|
|
|
enum SocketOption {
|
|
NoOptions = 0x00,
|
|
AbstractNamespaceOption = 0x01
|
|
};
|
|
Q_DECLARE_FLAGS(SocketOptions, SocketOption)
|
|
Q_FLAG(SocketOptions)
|
|
|
|
QLocalSocket(QObject *parent = nullptr);
|
|
~QLocalSocket();
|
|
|
|
void connectToServer(OpenMode openMode = ReadWrite);
|
|
void connectToServer(const QString &name, OpenMode openMode = ReadWrite);
|
|
void disconnectFromServer();
|
|
|
|
void setServerName(const QString &name);
|
|
QString serverName() const;
|
|
QString fullServerName() const;
|
|
|
|
void abort();
|
|
virtual bool isSequential() const override;
|
|
virtual qint64 bytesAvailable() const override;
|
|
virtual qint64 bytesToWrite() const override;
|
|
virtual bool canReadLine() const override;
|
|
virtual bool open(OpenMode openMode = ReadWrite) override;
|
|
virtual void close() override;
|
|
LocalSocketError error() const;
|
|
bool flush();
|
|
bool isValid() const;
|
|
qint64 readBufferSize() const;
|
|
void setReadBufferSize(qint64 size);
|
|
|
|
bool setSocketDescriptor(qintptr socketDescriptor,
|
|
LocalSocketState socketState = ConnectedState,
|
|
OpenMode openMode = ReadWrite);
|
|
qintptr socketDescriptor() const;
|
|
|
|
void setSocketOptions(SocketOptions option);
|
|
SocketOptions socketOptions() const;
|
|
QBindable<SocketOptions> bindableSocketOptions();
|
|
|
|
LocalSocketState state() const;
|
|
bool waitForBytesWritten(int msecs = 30000) override;
|
|
bool waitForConnected(int msecs = 30000);
|
|
bool waitForDisconnected(int msecs = 30000);
|
|
bool waitForReadyRead(int msecs = 30000) override;
|
|
|
|
Q_SIGNALS:
|
|
void connected();
|
|
void disconnected();
|
|
void errorOccurred(QLocalSocket::LocalSocketError socketError);
|
|
void stateChanged(QLocalSocket::LocalSocketState socketState);
|
|
|
|
protected:
|
|
virtual qint64 readData(char*, qint64) override;
|
|
qint64 readLineData(char *data, qint64 maxSize) override;
|
|
qint64 skipData(qint64 maxSize) override;
|
|
virtual qint64 writeData(const char*, qint64) override;
|
|
|
|
private:
|
|
Q_DISABLE_COPY(QLocalSocket)
|
|
#if defined(QT_LOCALSOCKET_TCP)
|
|
Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState))
|
|
Q_PRIVATE_SLOT(d_func(), void _q_errorOccurred(QAbstractSocket::SocketError))
|
|
#elif defined(Q_OS_WIN)
|
|
Q_PRIVATE_SLOT(d_func(), void _q_pipeClosed())
|
|
Q_PRIVATE_SLOT(d_func(), void _q_winError(ulong, const QString &))
|
|
#else
|
|
Q_PRIVATE_SLOT(d_func(), void _q_stateChanged(QAbstractSocket::SocketState))
|
|
Q_PRIVATE_SLOT(d_func(), void _q_errorOccurred(QAbstractSocket::SocketError))
|
|
Q_PRIVATE_SLOT(d_func(), void _q_connectToSocket())
|
|
Q_PRIVATE_SLOT(d_func(), void _q_abortConnectionAttempt())
|
|
#endif
|
|
};
|
|
|
|
#ifndef QT_NO_DEBUG_STREAM
|
|
Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketError);
|
|
Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketState);
|
|
#endif
|
|
|
|
Q_DECLARE_OPERATORS_FOR_FLAGS(QLocalSocket::SocketOptions)
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
#endif // QLOCALSOCKET_H
|