首先须知连接器加载的时候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)>}
