1// Copyright (C) 2017-2015 Ford Motor Company
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:declarations-only
4
5#ifndef QCONNECTIONCLIENTFACTORY_P_H
6#define QCONNECTIONCLIENTFACTORY_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include "qconnectionfactories_p.h"
20
21#include <QtNetwork/qlocalserver.h>
22#include <QtNetwork/qlocalsocket.h>
23
24QT_BEGIN_NAMESPACE
25
26class LocalClientIo : public QtROClientIoDevice
27{
28 Q_OBJECT
29
30public:
31 explicit LocalClientIo(QObject *parent = nullptr);
32 ~LocalClientIo() override;
33
34 QIODevice *connection() const override;
35 void connectToServer() override;
36 bool isOpen() const override;
37
38public Q_SLOTS:
39 void onError(QLocalSocket::LocalSocketError error);
40 void onStateChanged(QLocalSocket::LocalSocketState state);
41
42protected:
43 void doClose() override;
44 void doDisconnectFromServer() override;
45 QLocalSocket* m_socket;
46};
47
48#ifdef Q_OS_LINUX
49
50class AbstractLocalClientIo final : public LocalClientIo
51{
52 Q_OBJECT
53
54public:
55 explicit AbstractLocalClientIo(QObject *parent = nullptr);
56};
57
58#endif // Q_OS_LINUX
59
60class LocalServerIo final : public QtROServerIoDevice
61{
62 Q_OBJECT
63public:
64 explicit LocalServerIo(QLocalSocket *conn, QObject *parent = nullptr);
65
66 QIODevice *connection() const override;
67protected:
68 void doClose() override;
69
70private:
71 QLocalSocket *m_connection;
72};
73
74class LocalServerImpl : public QConnectionAbstractServer
75{
76 Q_OBJECT
77 Q_DISABLE_COPY(LocalServerImpl)
78
79public:
80 explicit LocalServerImpl(QObject *parent);
81 ~LocalServerImpl() override;
82
83 bool hasPendingConnections() const override;
84 QtROServerIoDevice *configureNewConnection() override;
85 QUrl address() const override;
86 bool listen(const QUrl &address) override;
87 QAbstractSocket::SocketError serverError() const override;
88 void close() override;
89 void setSocketOptions(QLocalServer::SocketOptions options);
90
91protected:
92 QLocalServer m_server;
93};
94
95#ifdef Q_OS_LINUX
96
97class AbstractLocalServerImpl final : public LocalServerImpl
98{
99 Q_OBJECT
100
101public:
102 explicit AbstractLocalServerImpl(QObject *parent);
103 QUrl address() const override;
104};
105
106#endif // Q_OS_LINUX
107
108QT_END_NAMESPACE
109
110#endif
111

source code of qtremoteobjects/src/remoteobjects/qconnection_local_backend_p.h