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
qbluetoothsocket_winrt_p.h
Go to the documentation of this file.
1// Copyright (C) 2018 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
4#ifndef QBLUETOOTHSOCKET_WINRT_P_H
5#define QBLUETOOTHSOCKET_WINRT_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
20#include <QtGlobal>
21
22QT_FORWARD_DECLARE_CLASS(SocketWorker)
23
24namespace ABI {
25 namespace Windows {
26 namespace Networking {
27 struct IHostName;
28 }
29 }
30}
31
32namespace Microsoft {
33 namespace WRL {
34 template <typename T> class ComPtr;
35 }
36}
37QT_BEGIN_NAMESPACE
38
39class QBluetoothSocketPrivateWinRT final: public QBluetoothSocketBasePrivate
40{
41 Q_OBJECT
42 friend class QBluetoothServerPrivate;
43
44public:
45 QBluetoothSocketPrivateWinRT();
46 ~QBluetoothSocketPrivateWinRT() override;
47
48 void connectToServiceHelper(const QBluetoothAddress &address,
49 quint16 port,
50 QIODevice::OpenMode openMode) override;
51
52 void connectToService(const QBluetoothServiceInfo &service,
53 QIODevice::OpenMode openMode) override;
54 void connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid,
55 QIODevice::OpenMode openMode) override;
56 void connectToService(const QBluetoothAddress &address, quint16 port,
57 QIODevice::OpenMode openMode) override;
58
59 bool ensureNativeSocket(QBluetoothServiceInfo::Protocol type) override;
60
61 QString localName() const override;
62 QBluetoothAddress localAddress() const override;
63 quint16 localPort() const override;
64
65 QString peerName() const override;
66 QBluetoothAddress peerAddress() const override;
67 quint16 peerPort() const override;
68
69 void abort() override;
70 void close() override;
71
72 qint64 writeData(const char *data, qint64 maxSize) override;
73 qint64 readData(char *data, qint64 maxSize) override;
74
75 bool setSocketDescriptor(Microsoft::WRL::ComPtr<ABI::Windows::Networking::Sockets::IStreamSocket> socket,
76 QBluetoothServiceInfo::Protocol socketType,
77 QBluetoothSocket::SocketState socketState = QBluetoothSocket::SocketState::ConnectedState,
78 QBluetoothSocket::OpenMode openMode = QBluetoothSocket::ReadWrite) override;
79
80 bool setSocketDescriptor(int socketDescriptor, QBluetoothServiceInfo::Protocol socketType,
81 QBluetoothSocket::SocketState socketState = QBluetoothSocket::SocketState::ConnectedState,
82 QBluetoothSocket::OpenMode openMode = QBluetoothSocket::ReadWrite) override;
83
84 qint64 bytesAvailable() const override;
85 bool canReadLine() const override;
86 qint64 bytesToWrite() const override;
87
88 SocketWorker *m_worker;
89
90 Microsoft::WRL::ComPtr<ABI::Windows::Networking::Sockets::IStreamSocket> m_socketObject;
91 Microsoft::WRL::ComPtr<ABI::Windows::Foundation::IAsyncAction> m_connectOp;
92
93 Q_INVOKABLE void addToPendingData(const QList<QByteArray> &data);
94
95private slots:
96 void handleNewData(const QList<QByteArray> &data);
97 void handleError(QBluetoothSocket::SocketError error);
98
99private:
100 void connectToService(Microsoft::WRL::ComPtr<ABI::Windows::Networking::IHostName> hostName,
101 const QString &serviceName, QIODevice::OpenMode openMode);
102 HRESULT handleConnectOpFinished(ABI::Windows::Foundation::IAsyncAction *action,
103 ABI::Windows::Foundation::AsyncStatus status);
104
105 QIODevice::OpenMode requestedOpenMode = QIODevice::NotOpen;
106};
107
108QT_END_NAMESPACE
109
110#endif
QBluetoothSocket * socket
ITypedEventHandler< StreamSocketListener *, StreamSocketListenerConnectionReceivedEventArgs * > ClientConnectedHandler
void mainThreadCoInit(void *caller)
void mainThreadCoUninit(void *caller)