diff options
author | Piotr Mikolajczyk <piotr.mikolajczyk@qt.io> | 2021-01-14 11:29:06 +0100 |
---|---|---|
committer | Piotr Mikolajczyk <piotr.mikolajczyk@qt.io> | 2021-04-01 06:57:04 +0100 |
commit | 2e3f48637e2e4fbd99424a98f361a0df277ea351 (patch) | |
tree | 274ad045334d025b87bb8973fb4afb47b6c3f8c9 /src/network/socket/qlocalsocket.h | |
parent | aa84de1afa78cf4b63239b35a4b65f1c9c4eab6c (diff) |
Linux: Add abstract address support for QLocal{Socket,Server}
Takes advantage of Linux's and Android's support for abstract namespace
when binding sockets, which is independent of the filesystem (see man
entry for unix domain sockets).
To make QLocalServer and QLocalSocket use an abstract socket address,
one needs to set the socket options to QLocalServer::AbstractNamespaceOption.
Fixes: QTBUG-16090
Change-Id: Ia9f9c9cc1ac5c28f9d44b0a48d854a7cfbd39b11
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/network/socket/qlocalsocket.h')
-rw-r--r-- | src/network/socket/qlocalsocket.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/network/socket/qlocalsocket.h b/src/network/socket/qlocalsocket.h index 22763cb339..817990a45c 100644 --- a/src/network/socket/qlocalsocket.h +++ b/src/network/socket/qlocalsocket.h @@ -54,6 +54,7 @@ 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 @@ -79,6 +80,13 @@ public: ClosingState = QAbstractSocket::ClosingState }; + enum SocketOption { + NoOptions = 0x00, + AbstractNamespaceOption = 0x01 + }; + Q_DECLARE_FLAGS(SocketOptions, SocketOption) + Q_FLAG(SocketOptions) + QLocalSocket(QObject *parent = nullptr); ~QLocalSocket(); @@ -108,6 +116,10 @@ public: 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); |