PySide6.QtRemoteObjects.QRemoteObjectNode

class QRemoteObjectNode

Qt远程对象网络上的一个节点。更多

PySide6.QtRemoteObjects.QRemoteObjectNode 的继承图

继承者: QRemoteObjectHostBase, QRemoteObjectRegistryHost, QRemoteObjectHost

概要

属性

方法

虚拟方法

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QRemoteObjectNode 类提供了进入 QtRemoteObjects 网络的入口点。一个网络可以简单到只有两个节点,也可以是由多个进程和设备组成的任意复杂网络。

一个QRemoteObjectNode没有其他节点可以连接的URL,因此只能获取副本。它不能共享源对象(只有QRemoteObjectHostQRemoteObjectRegistryHost节点可以共享)。

节点可以直接使用connectToNode相互连接,或者它们可以使用QRemoteObjectRegistry来简化连接。

QRemoteObjectRegistry 是一个特殊的副本,可供连接到注册表 URL 的每个节点使用。它知道如何连接到网络上的每个 QRemoteObjectSource 对象。

class ErrorCode

此枚举类型指定了与QRemoteObjectNode错误相关的各种错误代码:

常量

描述

QRemoteObjectNode.NoError

没有错误。

QRemoteObjectNode.RegistryNotAcquired

无法获取注册表。

QRemoteObjectNode.RegistryAlreadyHosted

注册表已经定义并正在托管源。

QRemoteObjectNode.NodeIsNoServer

给定的 QRemoteObjectNode 不是主机节点。

QRemoteObjectNode.ServerAlreadyCreated

主机节点已经被初始化。

QRemoteObjectNode.UnintendedRegistryHosting

尝试创建一个主机QRemoteObjectNode并将其自身作为注册表连接。

QRemoteObjectNode.OperationNotValidOnClientNode

尝试的操作在客户端QRemoteObjectNode上无效。

QRemoteObjectNode.SourceNotRegistered

给定的 QRemoteObjectSource 未在此节点上注册。

QRemoteObjectNode.MissingObjectName

给定的QObject没有设置objectName()。

QRemoteObjectNode.HostUrlInvalid

给定的URL具有无效或无法识别的方案。

QRemoteObjectNode.ProtocolMismatch

客户端和服务器具有不同的协议版本。

QRemoteObjectNode.ListenFailed

无法在指定的主机端口上监听。

QRemoteObjectNode.SocketAccessError

客户端不允许连接到服务器。请确保setLocalServerOptions设置正确。

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property heartbeatIntervalᅟ: int

此属性保存心跳间隔,单位为毫秒。

心跳(仅对套接字连接有帮助)会定期向连接的节点发送消息,以检测连接是否中断。如果检测到连接断开,Qt Remote Objects 将尝试自动重新连接。此函数可以帮助进行检测,因为客户端只有在尝试发送数据时才会检测到服务器不可用。

值为 0(默认值)将禁用心跳。

Access functions:
property persistedStoreᅟ: QRemoteObjectAbstractPersistedStore

此属性允许为节点设置一个QRemoteObjectAbstractPersistedStore实例。

允许具有PERSISTED特性的副本PROP成员在删除副本时保存其当前值,并在下次启动副本时恢复存储的值。

需要一个QRemoteObjectAbstractPersistedStore类实现来控制持久化的位置和方式。

Access functions:
property registryUrlᅟ: QUrl

此属性保存此节点使用的Registry的地址。

如果没有使用注册表,这是一个空的QUrl。

Access functions:
__init__([parent=None])
Parameters:

父对象QObject

QRemoteObjectNode 的默认构造函数,带有给定的 parent。以这种方式构造的节点无法连接,因此无法在网络上暴露源对象。它也不会包含 QRemoteObjectRegistry,除非使用 setRegistryUrl 手动设置。

__init__(registryAddress[, parent=None])
Parameters:

QRemoteObjectNode 连接到一个 { QRemoteObjectRegistry } {Registry}。以这种方式构建的节点无法连接,因此无法在网络上暴露源对象。查找并连接到其他(主机)节点的操作由 QRemoteObjectRegistry 指定的 registryAddress 处理。

acquireDynamic(name)
Parameters:

name – str

Return type:

QRemoteObjectDynamicReplica

返回源 nameQRemoteObjectDynamicReplica

acquireModel(name[, action=QtRemoteObjects.FetchRootSize[, rolesHint={}]])
Parameters:
  • name – str

  • actionInitialAction

  • rolesHint – 整数列表

Return type:

QAbstractItemModelReplica

返回一个指向Replica的指针,该指针专门从QAbstractItemModel派生。提供的name必须与用于将Model放到网络上的匹配enableRemoting使用的名称相匹配。action指定是否应在发出initialized信号之前获取数据。如果设置为PrefetchData,则将预取rolesHint中角色的数据。如果rolesHint为空,则将预取Source公开的所有角色的数据。

返回的模型在初始化之前将是空的,直到使用Source进行初始化。

addClientSideConnection(ioDevice)
Parameters:

ioDeviceQIODevice

为了通过External QIODevices获取Replica对象,Qt Remote Objects需要访问各个节点之间的通信通道(一个QIODevice)。正是addClientSideConnection()调用实现了这一点,它将ioDevice作为输入。任何未调用addClientSideConnection的acquire()调用仍然有效,但如果没有提供到Host节点的连接,Node将无法初始化Replica

另请参阅

addHostSideConnection

connectToNode(address)
Parameters:

地址QUrl

Return type:

布尔

将客户端节点连接到主机节点的address

连接将保持有效,直到主机节点被删除或无法通过网络访问。

一旦客户端连接到主机,如果相应的源正在远程传输,则可以获取有效的副本。

成功时返回 true,否则返回 false(通常是无法识别的URL,或连接到已经连接的地址)。

error(errorCode)
Parameters:

errorCodeErrorCode

heartbeatInterval()
Return type:

整数

另请参阅

setHeartbeatInterval()

属性 heartbeatIntervalᅟ 的获取器。

heartbeatIntervalChanged(heartbeatInterval)
Parameters:

heartbeatInterval – int

属性 heartbeatIntervalᅟ 的通知信号。

instances(typeName)
Parameters:

typeName – str

Return type:

字符串列表

此函数重载了 instances()

这个便捷函数提供了与模板版本相同的结果,但将Source类的名称作为参数(typeName),而不是从类类型中推导出来。

lastError()
Return type:

ErrorCode

返回最后设置的错误。

persistedStore()
Return type:

QRemoteObjectAbstractPersistedStore

另请参阅

setPersistedStore()

属性 persistedStoreᅟ 的获取器。

registry()
Return type:

QRemoteObjectRegistry

返回指向节点的QRemoteObjectRegistry的指针,如果节点正在使用注册表功能;否则返回None

registryUrl()
Return type:

QUrl

另请参阅

setRegistryUrl()

属性 registryUrlᅟ 的获取器。

remoteObjectAdded(loc)
Parameters:

loc – .std.pairQString,QRemoteObjectSourceLocationInfo

每当一个新的Source对象被添加到Registry时,就会发出此信号。如果没有设置Registry(即通过connectToNode直接建立的连接上的Sources),则不会发出此信号。loc参数包含有关添加的Source的信息,包括名称、类型和托管Node的QUrl。

remoteObjectRemoved(loc)
Parameters:

loc – .std.pairQString,QRemoteObjectSourceLocationInfo

每当从注册表中移除一个已知的Source对象时,都会发出此信号。如果没有设置注册表(即通过connectToNode直接建立的连接上的Sources),则不会发出此信号。loc参数包含有关被移除的Source的信息,包括名称、类型和托管节点的QUrl。

setHeartbeatInterval(interval)
Parameters:

interval – 整数

另请参阅

heartbeatInterval()

属性 heartbeatIntervalᅟ 的设置器。

setName(name)
Parameters:

name – str

name设置为此节点的内部名称。然后将其作为日志记录的一部分输出(如果启用)。如果您从多个节点合并日志数据,这主要是有用的。

setPersistedStore(persistedStore)
Parameters:

persistedStoreQRemoteObjectAbstractPersistedStore

另请参阅

persistedStore()

属性 persistedStoreᅟ 的设置器。

setRegistryUrl(registryAddress)
Parameters:

registryAddressQUrl

Return type:

布尔

另请参阅

registryUrl()

waitForRegistry([timeout=30000])
Parameters:

timeout – int

Return type:

布尔

阻塞直到此节点的Registry初始化或timeout(以毫秒为单位)到期。如果返回时Registry成功初始化,则返回true,否则返回false