Appearance
swbpy2.swblmclient 模块
概述
swbpy2.swblmclient 实现了与 swblm 通信守护进程交换消息的类。您可以使用预定义的通信方法,或者通过 swblm 通信接口与其他工具交换自定义消息。
要使用自定义通信,您需要在 SWBLM 守护进程的运行工具表中注册一个 swbpy2.swblmclient.Client 实例。具体示例请参考 Examples。
类和方法列表
class swbpy2.swblmclient.Client(projectpath, toolname='swblmclient-py', registertool=False)
基类:SWBLMClient
与 SWBLM 传输层通信的客户端类。
Client.AbortNodes(nodes=[])
指示 gsub 中止给定的一组节点(或所有节点)。
参数:
nodes(list):要中止的输入节点列表;如果列表为空,则中止所有节点。
Client.AddObserver(observer)
添加 Observer 对象以接收 SWBLM 消息。
参数:
observer(swbpy2.swblmclient.Observer.Observer): Observer 类型实例。
抛出:
TypeError: 如果输入 observer 不是swbpy2.swblmclient.Observer.Observer类型。
Client.IsRegistered()
检查客户端是否已在 SWBLM 守护进程注册。
返回:
bool: 客户端是否已注册。
Client.LoadFileInSvisual(inputfile)
指示 SVisual 加载给定的绘图文件或脚本文件。
参数:
inputfile(str): 输入脚本文件。
抛出:
ValueError: 未提供输入脚本文件。
Client.ReloadInSWB()
在 SWB GUI 中重新加载 SWB 项目(如果已打开)。
Client.RemoveObserver(observer)
移除 Observer 对象以停止接收 SWBLM 消息。
抛出:
TypeError: 如果输入 observer 不是swbpy2.swblmclient.Observer.Observer类型。
Client.SendMessage(args)
通过 SWBLM 传输层发送消息给接收者。
抛出:
ValueError: 如果RECIPIENTS列表为空。ValueError: 如果未提供COMMAND。
注意: 具体用例请参考 Examples。
class swbpy2.swblmclient.Observer
基类:ABC, SWBObserver
从 SWBLM 传输层接收消息的 Observer 接口。
Observer.HandleEvents(args) (abstract)
当从 SWBLM 守护进程接收到消息时调用的回调函数。
参数:
args(dict): 从 SWBLM 守护进程接收到的键值对字典,包含一组消息值。
注意: 具体用例请参考 Examples。
示例
swbpy2.swblmclient.Observer observer 类可用于建模自定义实体,该实体使用 swbpy2.swblmclient.Client 类型的 Python 客户端实例处理通过 SWBLM 守护进程交换的消息:
python
# custom observer class to process SWBLM messages
from swbpy2.swblmclient.Observer import Observer
class ProcessMessage(Observer):
def __init__(self):
super().__init__()
def HandleEvents(self, args):
# custom logic to process SWBLM message
# e.g. output message map received
for key in args:
print('key:', key, 'value:', args[key])
# sender
from swbpy2.swblmclient import Client
import ProcessMessage
client = Client('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/', 'python-client-sender', True)
args = dict()
args['RECIPIENTS'] = 'python-client-receiver'
args['PROJECT'] = client.GetProjectPath()
args['COMMAND'] = 'TEST_COMMAND'
args['KEY_01'] = 'VALUE_01'
args['KEY_02'] = 'VALUE_02'
client.SendMessage(args)
# receiver
from swbpy2.swblmclient import Client
import ProcessMessage
client = Client('/u/username/Applications_Library/GettingStarted/swb/SimpleMOS/', 'python-client-receiver', True)
_ob = ProcessMessage()
client.AddObserver(_ob)