disconnectFromPlatform static method

Future<void> disconnectFromPlatform()

Implementation

static Future<void> disconnectFromPlatform() async {
  _instance.socketService.disableRetry();
  const int timeoutInSec = 10;
  try {
    if (_instance.requiredDevices.contains(DeviceType.bp)) {
      for (var dev in _instance.platformDevices.bpDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }
    if (_instance.requiredDevices.contains(DeviceType.bt)) {
      for (var dev in _instance.platformDevices.btDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }
    if (_instance.requiredDevices.contains(DeviceType.bc)) {
      for (var dev in _instance.platformDevices.bcDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }
    if (_instance.requiredDevices.contains(DeviceType.be)) {
      for (var dev in _instance.platformDevices.beDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }
    if (_instance.requiredDevices.contains(DeviceType.bg)) {
      for (var dev in _instance.platformDevices.bgDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }
    if (_instance.requiredDevices.contains(DeviceType.ms)) {
      for (var dev in _instance.platformDevices.msDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }
    if (_instance.requiredDevices.contains(DeviceType.oc)) {
      for (var dev in _instance.platformDevices.ocDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }
    if (_instance.requiredDevices.contains(DeviceType.pr)) {
      for (var dev in _instance.platformDevices.prDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }
    if (_instance.requiredDevices.contains(DeviceType.zi)) {
      for (var dev in _instance.platformDevices.ziDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }
    if (_instance.requiredDevices.contains(DeviceType.zl)) {
      for (var dev in _instance.platformDevices.zlDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }
    if (_instance.requiredDevices.contains(DeviceType.dd)) {
      for (var dev in _instance.platformDevices.ddDevices) {
        final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
        log("$releaseRes");
      }
    }

    // for (var dev in _instance.platformDevices.ziDevices) {
    //   final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
    //   log("$releaseRes");
    // }
    // for (var dev in _instance.platformDevices.zlDevices) {
    //   final releaseRes = await dev.release().timeout(const Duration(seconds: timeoutInSec));
    //   log("$releaseRes");
    // }
  } catch (e) {
    log("$e");
  }
  log("Sending Bye Request");

  ByeRequest req = ByeRequest(messageID: currentMessageID);
  try {
    String? byeResponseXML = await send(xml: req.toXML()).timeout(const Duration(seconds: 5), onTimeout: () {
      _instance.socketService.disconnect();
      throw CuppsCommandException("No Response to Bye from Platform");
    });
    ByeResponse byeRes = ByeResponse.fromXML(byeResponseXML);
    if (byeRes.result.toLowerCase() == "ok") {
      _instance.socketService.disconnect();
    } else {
      log("No Response to Bye from platform");
      _instance.socketService.disconnect();
    }
  } catch (e) {
    _instance.socketService.disconnect();
  }
}