Класс QRemoteObjectNode
Узел в сети Qt Remote Objects. Подробнее...
| Заголовок: | #include <QRemoteObjectNode> |
| qmake: | QT += remoteobjects |
| Наследует: | QObject |
| Наследуется от: |
Типы
| Перечисление | КодОшибки { БезОшибки, РеестрНеПолучен, РеестрУжеПривязан, УзелНеСервер, ..., НеверныйUrlХоста } |
| Перечисление | ВладениеХранилищем { НеПередаватьВладение, ПередатьВладениеУзлу } |
Свойства
- registryUrl : QUrl
- 1 свойство унаследовано от QObject
Открытые функции
| QRemoteObjectNode(QObject *parent = nullptr) | |
| QRemoteObjectNode(const QUrl ®istryAddress, QObject *parent = nullptr) | |
| виртуальный | ~QRemoteObjectNode() |
| ObjectType * | acquire(const QString &name = QString()) |
| QRemoteObjectDynamicReplica * | acquireDynamic(const QString &name) |
| QAbstractItemModelReplica * | acquireModel(const QString &name) |
| bool | connectToNode(const QUrl &address) |
| QStringList | instances() const |
| QStringList | instances(const QString &typeName) const |
| КодОшибки | lastError() const |
| const QRemoteObjectRegistry * | registry() const |
| QUrl | registryUrl() const |
| виртуальный void | setName(const QString &name) |
| void | setPersistedStore(QRemoteObjectPersistedStore *store, StorageOwnership ownership = DoNotPassOwnership) |
| виртуальный bool | setRegistryUrl(const QUrl ®istryAddress) |
| bool | waitForRegistry(int timeout = 30000) |
Переопределенные открытые функции
| виртуальный void | timerEvent(QTimerEvent *) |
- 32 открытые функции унаследованы от QObject
Сигналы
| void | error(QRemoteObjectNode::КодОшибки errorCode) |
| void | remoteObjectAdded(const QRemoteObjectSourceLocation &loc) |
| void | remoteObjectRemoved(const QRemoteObjectSourceLocation &loc) |
- 2 сигнала унаследованы от QObject
Защищенные функции
| QRemoteObjectNode(QRemoteObjectNodePrivate &, QObject *parent) |
- 9 защищенных функций унаследованы от QObject
Дополнительные унаследованные члены
Подробное описание
Узел в сети Qt Remote Objects.
Класс QRemoteObjectNode предоставляет точку входа в сеть QtRemoteObjects. Сеть может быть такой простой, как два узла, или произвольно сложной системой процессов и устройств.
Узел QRemoteObjectNode не имеет URL, к которому другие узлы могут подключиться, поэтому он может получать только копии (replicas). Он не может обмениваться исходными объектами (только узлы QRemoteObjectHost и QRemoteObjectRegistryHost могут обмениваться).
Узлы могут напрямую подключаться друг к другу с помощью connectToNode или использовать QRemoteObjectRegistry для упрощения подключения.
У QRemoteObjectRegistry есть специальная копия, доступная каждому узлу, подключенному к URL реестра. Он знает, как подключаться к каждому объекту QRemoteObjectSource в сети.
См. также QRemoteObjectHost и QRemoteObjectRegistryHost.
Документация по типам членов
перечисление QRemoteObjectNode::КодОшибки
Это перечисление определяет различные коды ошибок, связанные с ошибками QRemoteObjectNode:
| Константа | Значение | Описание |
|---|---|---|
QRemoteObjectNode::NoError |
0 |
Нет ошибок. |
QRemoteObjectNode::RegistryNotAcquired |
1 |
Реестр не был получен. |
QRemoteObjectNode::RegistryAlreadyHosted |
2 |
Реестр уже определен и предоставляет доступ к источникам. |
QRemoteObjectNode::NodeIsNoServer |
3 |
Указанный QRemoteObjectNode не является узлом-хостом. |
QRemoteObjectNode::ServerAlreadyCreated |
4 |
Узел-хост уже был инициализирован. |
QRemoteObjectNode::UnintendedRegistryHosting |
5 |
Попытка создания узла-хоста QRemoteObjectNode и подключения к нему как к реестру. |
QRemoteObjectNode::OperationNotValidOnClientNode |
6 |
Попытка операции некорректна для клиентского узла QRemoteObjectNode. |
QRemoteObjectNode::SourceNotRegistered |
7 |
Указанный QRemoteObjectSource не зарегистрирован в этом узле. |
QRemoteObjectNode::MissingObjectName |
8 |
У указанного объекта QObject не задано имя objectName(). |
QRemoteObjectNode::HostUrlInvalid |
9 |
Указанный URL имеет неверный или нераспознанный схему. |
перечисление QRemoteObjectNode::ВладениеХранилищем
Используется для указания узлу, должен ли он принимать владение переданным указателем:
| Константа | Значение | Описание |
|---|---|---|
QRemoteObjectNode::DoNotPassOwnership |
0 |
Владение объектом не передается. |
QRemoteObjectNode::PassOwnershipToNode |
1 |
Владение объектом передается, и деструктор узла вызовет delete. |
Документация по свойствам
registryUrl : QUrl
Это свойство содержит адрес реестра, используемого этим узлом.
Будет пустой QUrl, если реестр не используется.
Функции доступа:
| QUrl | registryUrl() const |
| virtual bool | setRegistryUrl(const QUrl ®istryAddress) |
Документация по членам-функциям
QRemoteObjectNode::QRemoteObjectNode(QObject *parent = nullptr)
Конструктор по умолчанию для QRemoteObjectNode с заданным parent. Узел, созданный таким образом, не может быть подключён и, следовательно, не может экспонировать объекты-источники в сети. Он также не будет включать QRemoteObjectRegistry, если не задан вручную с помощью setRegistryUrl.
См. также connectToNode и setRegistryUrl.
QRemoteObjectNode::QRemoteObjectNode(const QUrl ®istryAddress, QObject *parent = nullptr)
QRemoteObjectNode, подключённый к QRemoteObjectRegistry. Узел, созданный таким образом, не может быть подключён и, следовательно, не может экспонировать объекты-источники в сети. Поиск и подключение к другим узлам (хостам) осуществляется с помощью QRemoteObjectRegistry, заданного параметром registryAddress.
См. также connectToNode, setRegistryUrl, QRemoteObjectHost и QRemoteObjectRegistryHost.
[protected] QRemoteObjectNode::QRemoteObjectNode(QRemoteObjectNodePrivate &, QObject *parent)
Копирующий конструктор.
[virtual] QRemoteObjectNode::~QRemoteObjectNode()
Уничтожает экземпляр QRemoteObjectNode. Деструктор виртуальный.
ObjectType *QRemoteObjectNode::acquire(const QString &name = QString())
Возвращает указатель на реплику типа ObjectType (который является шаблоным параметром и должен наследоваться от QRemoteObjectReplica). То есть, шаблонный параметр должен быть типом, сгенерированным repc. Параметр name может использоваться для задания имени объекта во время вызова QRemoteObjectHost::enableRemoting().
QRemoteObjectDynamicReplica *QRemoteObjectNode::acquireDynamic(const QString &name)
Возвращает QRemoteObjectDynamicReplica источника name.
QAbstractItemModelReplica *QRemoteObjectNode::acquireModel(const QString &name)
Возвращает указатель на реплику, которая специфически происходит от QAbstractItemModel. Переданное значение name должно совпадать с именем, использованным в enableRemoting, помещавшим модель в сеть. Возвращаемое model будет пустым, пока не будет инициализировано источником.
bool QRemoteObjectNode::connectToNode(const QUrl &address)
Подключает клиентский узел к узлу-хосту по адресу address.
Подключения остаются валидными до удаления узла-хоста или его недоступности по сети.
После подключения клиента к хосту можно получить валидные реплики, если соответствующий источник отдаётся в удалённый доступ.
Возвращает true при успехе, false в противном случае (обычно неверный URL или подключение к уже подключённому адресу).
[signal] void QRemoteObjectNode::error(QRemoteObjectNode::ErrorCode errorCode)
QStringList QRemoteObjectNode::instances() const
Эта шаблонная функция (принимающая тип, сгенерированный repc, в качестве шаблона параметра) вернёт список имён каждого экземпляра этого типа в сети удалённых объектов. Например, если у вас определён класс Shape в файле .rep, и классы Circle и Square наследуются от определения Source, их можно разделять в сети удалённых объектов с помощью enableRemoting.
Square square; Circle circle; myHost.enableRemoting(&square, "Square"); myHost.enableRemoting(&circle, "Circle");
Затем можно использовать instance, чтобы найти доступные экземпляры Shape.
QStringList instances = clientNode.instances<Shape>();
// will return a QStringList containing "Circle" and "Square"
auto instance1 = clientNode.acquire<Shape>("Circle");
auto instance2 = clientNode.acquire<Shape>("Square");
... QStringList QRemoteObjectNode::instances(const QString &typeName) const
Эта функция перегружает instances().
Эта вспомогательная функция обеспечивает тот же результат, что и шаблонная версия, но принимает имя класса источника (typeName) в качестве параметра, а не выводит его из типа класса.
ErrorCode QRemoteObjectNode::lastError() const
Возвращает последнее установленное значение ошибки.
const QRemoteObjectRegistry *QRemoteObjectNode::registry() const
Возвращает указатель на QRemoteObjectRegistry узла, если узел использует функцию реестра; в противном случае возвращает 0.
[signal] void QRemoteObjectNode::remoteObjectAdded(const QRemoteObjectSourceLocation &loc)
Этот сигнал генерируется всякий раз, когда новый объект источника добавляется в реестр. Сигнал не будет сгенерирован, если реестр не задан (т. е. для источников, подключенных напрямую с помощью connectToNode). Параметр loc содержит информацию о добавленном источнике, включая имя, тип и QUrl узла-хоста.
См. также remoteObjectRemoved и instances.
[signal] void QRemoteObjectNode::remoteObjectRemoved(const QRemoteObjectSourceLocation &loc)
Этот сигнал генерируется, когда известный объект источника удаляется из реестра. Сигнал не будет сгенерирован, если реестр не задан (т. е. для источников, подключенных напрямую с помощью connectToNode). Параметр loc содержит информацию об удалённом источнике, включая имя, тип и QUrl узла-хоста.
См. также remoteObjectAdded и instances.
[virtual] void QRemoteObjectNode::setName(const QString &name)
Устанавливает name в качестве внутреннего имени для этого узла. Затем это имя выводится как часть журнальных данных (если включено). Это полезно в основном при объединении данных журналов из нескольких узлов.
void QRemoteObjectNode::setPersistedStore(QRemoteObjectPersistedStore *store, StorageOwnership ownership = DoNotPassOwnership)
Предоставляет QRemoteObjectPersistedStore store для узла, позволяя членам реплики PROP с атрибутом PERSISTED сохранять текущее значение при удалении реплики и восстанавливать сохранённое значение при следующем запуске реплики. Требует реализации класса QRemoteObjectPersistedStore для управления тем, где и как осуществляется сохранение. Используйте перечисление QRemoteObjectNode::StorageOwnership, переданное через ownership, чтобы определить, будет ли узел удалять переданный указатель или нет.
См. также QRemoteObjectPersistedStore и QRemoteObjectNode::StorageOwnership.
[virtual] void QRemoteObjectNode::timerEvent(QTimerEvent *)
Переопределён из QObject::timerEvent().
bool QRemoteObjectNode::waitForRegistry(int timeout = 30000)
Блокирует выполнение, пока реестр узла реестра не будет инициализирован или не истечёт таймаут timeout (в миллисекундах). Возвращает true если реестр успешно инициализирован при возврате, или false в противном случае.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qremoteobjectnode.html