/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\page qtremoteobjects-custom-transport.html
\title APIs for Implementing Custom Transport Backends
\brief Gives an overview of abstract APIs for implementing custom transport
backends for Qt Remote Objects.

Qt Remote Objects provides several abstract interfaces for implementing custom
transport backends. The concept behind these classes is that there needs to be
a host node, which has an address that can be connected to. Then there is a
client object, which can be publicly constructed, and can connect to the server.
When the server gets a connection request, it creates the server side of the
connection, which communicates directly with the client. There are thus three
abstractions, one for the server (\c QConnectionAbstractServer), one for the
client-side of the connection (\c QtROClientIoDevice), and the third for the
server-side of the connection (\c QtROServerIoDevice). The latter two inherit
from \c QtROIoDeviceBase.

\section1 API Overview

\list
\li \c QtROIoDeviceBase
\li \c QtROClientIoDevice
\li \c QtROServerIoDevice
\li \c QConnectionAbstractServer
\endlist

After implementing these interfaces, you can register your custom protocol
using the qRegisterRemoteObjectsServer() and qRegisterRemoteObjectsClient()
methods.

\note These APIs are provided to give more flexibility for implementing custom
communication protocols for Qt Remote Objects. There are no source or binary
compatibility guarantees for them, meaning that the API is only guaranteed to work
with the Qt version it was developed against. API changes will however only be made
in minor releases. (6.1, 6.2, and so on.)

*/
