release method
Implementation
Future<CuppsCommandResponse> release() async {
try {
if (isConnected) {
if (locked) {
DeviceUnlockRequest req = DeviceUnlockRequest(messageID: currentMessageID);
String unlockResXML = await send(xml: req.toXML());
DeviceUnlockResponse unlockRes = DeviceUnlockResponse.fromXML(unlockResXML);
if (unlockRes.result.toLowerCase() == "ok") {
locked = false;
DeviceReleaseRequest req = DeviceReleaseRequest(messageID: currentMessageID);
String deviceReleaseResXML = await send(xml: req.toXML());
DeviceReleaseResponse deviceReleaseRes = DeviceReleaseResponse.fromXML(deviceReleaseResXML);
if (deviceReleaseRes.result.toLowerCase() == "ok") {
socketService.disableRetry();
initialized = false;
locked = false;
modded = false;
await socketService.disconnect(disableRetry: true).timeout(const Duration(seconds: 12), onTimeout: () {
onDeviceDisconnect();
});
return CuppsCommandResponse(status: true, msg: "Device:$deviceName Released Successfully");
} else {
return CuppsCommandResponse(status: false, msg: deviceReleaseRes.result);
}
} else {
socketService.disableRetry();
initialized = false;
locked = false;
modded = false;
await socketService.disconnect(disableRetry: true).timeout(const Duration(seconds: 12), onTimeout: () {
onDeviceDisconnect();
});
return CuppsCommandResponse(status: true, msg: unlockRes.result);
}
} else {
log("Not Locked");
DeviceReleaseRequest req = DeviceReleaseRequest(messageID: currentMessageID);
String deviceReleaseResXML = await send(xml: req.toXML());
log(deviceReleaseResXML);
DeviceReleaseResponse deviceReleaseRes = DeviceReleaseResponse.fromXML(deviceReleaseResXML);
if (deviceReleaseRes.result.toLowerCase() == "ok") {
socketService.disableRetry();
initialized = false;
locked = false;
modded = false;
await socketService.disconnect(disableRetry: true).timeout(const Duration(seconds: 12), onTimeout: () {
onDeviceDisconnect();
});
return CuppsCommandResponse(status: true, msg: "Device :$deviceName Released Successfully");
} else {
socketService.disableRetry();
initialized = false;
locked = false;
modded = false;
await socketService.disconnect(disableRetry: true).timeout(const Duration(seconds: 12), onTimeout: () {
onDeviceDisconnect();
});
return CuppsCommandResponse(status: true, msg: deviceReleaseRes.result);
}
}
} else {
await socketService.disconnect(disableRetry: true).timeout(const Duration(seconds: 12), onTimeout: () {
onDeviceDisconnect();
});
initialized = false;
locked = false;
modded = false;
return CuppsCommandResponse(status: true, msg: "Device :$deviceName is not Acquired");
}
} catch (e) {
socketService.disableRetry();
return CuppsCommandResponse(status: true, msg: "Device $deviceName release Exception: $e");
}
}