首先须知连接器加载的时候TBGatewayService里相关的两个字典(参考连接器加载相关章节):
- connectors_configs
_implemented_connectors
{
"mqtt":[
{
"name":"MQTT Broker Connector",
"config":{
"mqtt-test.json":{
"name":"MQTT Broker Connector",
//mqtt-test.json配置文件里的相关的配置信息
"broker":{},
"mapping":{},
"connectRequests":{},
"disconnectRequests":{},
"attributeUpdates":{},
"serverSideRpc":{}
}
},
"config_updated":{
},
"config_file_path":"mqtt-test.json",
"grpc_key":None
}
]
}
{
"mqtt":<class 'MqttConnector.MqttConnector'>
}
连接器的连接流程:
遍历connectors_configs字典:如果连接器类型不是grpc
- 匹配到_implemented_connectors字典里的连接器的实现类
构造连接器对象,添加到TBGatewayService名称为available_connectors的字典里,键名为连接配置名
connector = self._implemented_connectors[connector_type](self, connector_config["config"][config], connector_type)
connector.setName(connector_config["name"])
self.available_connectors[connector.get_name()] = connector
调用连接器对象的open()方法
connector.open()
如果连接器类型是grpc,执行:
__grpc_connectors.update({connector_config['grpc_key']: connector_config})
TBGatewayService名称为available_connectors字典:
{
"MQTT Broker Connector":<MqttConnector(MQTT Broker Connector, initial daemon)>
}