首先须知连接器加载的时候TBGatewayService里相关的两个字典(参考连接器加载相关章节):

    1. connectors_configs
    2. _implemented_connectors

      1. {
      2. "mqtt":[
      3. {
      4. "name":"MQTT Broker Connector",
      5. "config":{
      6. "mqtt-test.json":{
      7. "name":"MQTT Broker Connector",
      8. //mqtt-test.json配置文件里的相关的配置信息
      9. "broker":{},
      10. "mapping":{},
      11. "connectRequests":{},
      12. "disconnectRequests":{},
      13. "attributeUpdates":{},
      14. "serverSideRpc":{}
      15. }
      16. },
      17. "config_updated":{
      18. },
      19. "config_file_path":"mqtt-test.json",
      20. "grpc_key":None
      21. }
      22. ]
      23. }
      1. {
      2. "mqtt":<class 'MqttConnector.MqttConnector'>
      3. }

      连接器的连接流程:
      遍历connectors_configs字典:

    3. 如果连接器类型不是grpc

      1. 匹配到_implemented_connectors字典里的连接器的实现类
      2. 构造连接器对象,添加到TBGatewayService名称为available_connectors的字典里,键名为连接配置名

        1. connector = self._implemented_connectors[connector_type](self, connector_config["config"][config], connector_type)
        2. connector.setName(connector_config["name"])
        3. self.available_connectors[connector.get_name()] = connector
      3. 调用连接器对象的open()方法

        1. connector.open()
    4. 如果连接器类型是grpc,执行:

      1. __grpc_connectors.update({connector_config['grpc_key']: connector_config})

      TBGatewayService名称为available_connectors字典:

      1. {
      2. "MQTT Broker Connector":<MqttConnector(MQTT Broker Connector, initial daemon)>
      3. }