private static void stopMiningOnDeviceWithUuid(string uuid) { string errMsgForUuid = $"Cannot stop device with uuid {uuid}"; // get device with uuid if it exists, devs can be single device uuid var deviceWithUUID = AvailableDevices.GetDeviceWithUuidOrB64Uuid(uuid); if (deviceWithUUID == null) { throw new RpcException($"{errMsgForUuid}. Device not found.", ErrorCode.NonExistentDevice); } if (deviceWithUUID.IsDisabled) { throw new RpcException($"{errMsgForUuid}. Device is disabled.", ErrorCode.DisabledDevice); } var(success, msg) = ApplicationStateManager.StopDevice(deviceWithUUID); if (!success) { // TODO this can also be an error throw new RpcException($"{errMsgForUuid}. {msg}.", ErrorCode.RedundantRpc); } }
private static bool SetDevicesEnabled(string devs, bool enabled) { bool allDevices = devs == "*"; // get device with uuid if it exists, devs can be single device uuid var deviceWithUUID = AvailableDevices.GetDeviceWithUuidOrB64Uuid(devs); // Check if RPC should execute // check if redundant rpc if (allDevices && enabled && ApplicationStateManager.IsEnableAllDevicesRedundantOperation()) { throw new RpcException("All devices are already enabled.", ErrorCode.RedundantRpc); } // all disable if (allDevices && !enabled && ApplicationStateManager.IsDisableAllDevicesRedundantOperation()) { throw new RpcException("All devices are already disabled.", ErrorCode.RedundantRpc); } // if single and doesn't exist if (!allDevices && deviceWithUUID == null) { throw new RpcException("Device not found", ErrorCode.NonExistentDevice); } // if we have the device but it is redundant if (!allDevices && deviceWithUUID.IsDisabled == !enabled) { var stateStr = enabled ? "enabled" : "disabled"; throw new RpcException($"Devices with uuid {devs} is already {stateStr}.", ErrorCode.RedundantRpc); } // if got here than we can execute the call ApplicationStateManager.SetDeviceEnabledState(null, (devs, enabled)); // TODO invoke the event for controls that use it OnDeviceUpdate?.Invoke(null, new DeviceUpdateEventArgs(AvailableDevices.Devices.ToList())); // TODO this used to return 'anyStillRunning' but we are actually checking if there are any still enabled left var anyStillEnabled = AvailableDevices.Devices.Any(); return(anyStillEnabled); }
protected Miner(string minerDeviceName, List <MiningPair> miningPairs, string groupKey) { MiningPairs = miningPairs; IsInit = MiningPairs != null && MiningPairs.Count > 0; if (IsInit) { foreach (var pair in miningPairs) { // for PRODUCTION we still need these indexes get rid of this when possible var cDev = AvailableDevices.GetDeviceWithUuidOrB64Uuid(pair.Device.UUID); var index = cDev?.Index ?? -1; if (index < 0) { continue; } DevIndexes.Add(index); } } GroupKey = groupKey; MinerDeviceName = minerDeviceName; Logger.Info(MinerTag(), "NEW MINER CREATED"); }