PySide6.QtRemoteObjects.QRemoteObjectNode¶
- class QRemoteObjectNode¶
Qt远程对象网络上的一个节点。更多…
继承者:
QRemoteObjectHostBase,QRemoteObjectRegistryHost,QRemoteObjectHost概要¶
属性¶
heartbeatIntervalᅟ- 心跳间隔时间(毫秒)persistedStoreᅟ- 允许为节点设置一个QRemoteObjectAbstractPersistedStore实例registryUrlᅟ- 此节点使用的注册表地址
方法¶
def
__init__()def
acquireDynamic()def
acquireModel()def
connectToNode()def
instances()def
lastError()def
persistedStore()def
registry()def
registryUrl()
虚拟方法¶
def
setName()def
setRegistryUrl()
信号¶
def
error()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
QRemoteObjectNode类提供了进入 QtRemoteObjects 网络的入口点。一个网络可以简单到只有两个节点,也可以是由多个进程和设备组成的任意复杂网络。一个
QRemoteObjectNode没有其他节点可以连接的URL,因此只能获取副本。它不能共享源对象(只有QRemoteObjectHost和QRemoteObjectRegistryHost节点可以共享)。节点可以直接使用
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:
此属性保存此节点使用的
Registry的地址。如果没有使用注册表,这是一个空的QUrl。
- Access functions:
QRemoteObjectNode的默认构造函数,带有给定的parent。以这种方式构造的节点无法连接,因此无法在网络上暴露源对象。它也不会包含QRemoteObjectRegistry,除非使用setRegistryUrl手动设置。QRemoteObjectNode连接到一个 {QRemoteObjectRegistry} {Registry}。以这种方式构建的节点无法连接,因此无法在网络上暴露源对象。查找并连接到其他(主机)节点的操作由QRemoteObjectRegistry指定的registryAddress处理。- acquireDynamic(name)¶
- Parameters:
name – str
- Return type:
返回源
name的QRemoteObjectDynamicReplica。- acquireModel(name[, action=QtRemoteObjects.FetchRootSize[, rolesHint={}]])¶
- Parameters:
name – str
action –
InitialActionrolesHint – 整数列表
- Return type:
返回一个指向Replica的指针,该指针专门从QAbstractItemModel派生。提供的
name必须与用于将Model放到网络上的匹配enableRemoting使用的名称相匹配。action指定是否应在发出initialized信号之前获取数据。如果设置为PrefetchData,则将预取rolesHint中角色的数据。如果rolesHint为空,则将预取Source公开的所有角色的数据。返回的模型在初始化之前将是空的,直到使用Source进行初始化。
为了通过External QIODevices获取Replica对象,Qt Remote Objects需要访问各个节点之间的通信通道(一个QIODevice)。正是addClientSideConnection()调用实现了这一点,它将
ioDevice作为输入。任何未调用addClientSideConnection的acquire()调用仍然有效,但如果没有提供到Host节点的连接,Node将无法初始化Replica。将客户端节点连接到主机节点的
address。连接将保持有效,直到主机节点被删除或无法通过网络访问。
一旦客户端连接到主机,如果相应的源正在远程传输,则可以获取有效的副本。
成功时返回
true,否则返回false(通常是无法识别的URL,或连接到已经连接的地址)。- heartbeatInterval()¶
- Return type:
整数
属性
heartbeatIntervalᅟ的获取器。- heartbeatIntervalChanged(heartbeatInterval)¶
- Parameters:
heartbeatInterval – int
属性
heartbeatIntervalᅟ的通知信号。- instances(typeName)¶
- Parameters:
typeName – str
- Return type:
字符串列表
此函数重载了
instances()。这个便捷函数提供了与模板版本相同的结果,但将Source类的名称作为参数(
typeName),而不是从类类型中推导出来。返回最后设置的错误。
- persistedStore()¶
- Return type:
另请参阅
属性
persistedStoreᅟ的获取器。- registry()¶
- Return type:
返回指向节点的
QRemoteObjectRegistry的指针,如果节点正在使用注册表功能;否则返回None。- registryUrl()¶
- Return type:
另请参阅
属性
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ᅟ的设置器。- setName(name)¶
- Parameters:
name – str
将
name设置为此节点的内部名称。然后将其作为日志记录的一部分输出(如果启用)。如果您从多个节点合并日志数据,这主要是有用的。- setPersistedStore(persistedStore)¶
- Parameters:
persistedStore –
QRemoteObjectAbstractPersistedStore
另请参阅
属性
persistedStoreᅟ的设置器。- waitForRegistry([timeout=30000])¶
- Parameters:
timeout – int
- Return type:
布尔
阻塞直到此节点的Registry初始化或
timeout(以毫秒为单位)到期。如果返回时Registry成功初始化,则返回true,否则返回false。