@Override
  public void customize(
      final PipeParameters parameters, final PipeConnectorRuntimeConfiguration configuration)
      throws Exception {
    synchronized (CLS_ID_TO_REFERENCE_COUNT_AND_HANDLE_MAP) {
      clsID = parameters.getStringByKeys(CONNECTOR_OPC_DA_CLSID_KEY, SINK_OPC_DA_CLSID_KEY);
      if (Objects.isNull(clsID)) {
        clsID =
            OpcDaServerHandle.getClsIDFromProgID(
                parameters.getStringByKeys(CONNECTOR_OPC_DA_PROGID_KEY, SINK_OPC_DA_PROGID_KEY));
      }
      handle =
          CLS_ID_TO_REFERENCE_COUNT_AND_HANDLE_MAP
              .computeIfAbsent(
                  clsID, key -> new Pair<>(new AtomicInteger(0), new OpcDaServerHandle(clsID)))
              .getRight();
      CLS_ID_TO_REFERENCE_COUNT_AND_HANDLE_MAP.get(clsID).getLeft().incrementAndGet();
    }
  }
Send data in IoTDB based on Opc Da protocol, using JNA. All data are converted into tablets, and
then push the newest value to the <b>local COM</b> server in another process.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/protocol/opcda/OpcDaConnector.java