예제 #1
0
 public FrequentPatternGUI()
 {
     InitializeComponent();
     _managerDataMining = new MiningManager();
     _rules             = new List <AssociationRule>();
     _actualMap         = new Map();
 }
 private static async Task SetBTC(string btc)
 {
     // change in memory and save changes to file
     CredentialsSettings.Instance.BitcoinAddress = btc;
     ConfigManager.GeneralConfigFileCommit();
     await MiningManager.ChangeUsername(CreateUsername(btc, RigID()));
 }
예제 #3
0
 private static void RestartMinersIfMining()
 {
     // if mining update the mining manager
     if (MiningState.Instance.IsCurrentlyMining)
     {
         MiningManager.RestartMiners(GetUsername());
     }
 }
예제 #4
0
 public void Initialize()
 {
     Instance = this;
     titleText.SetActive(true);
     foreach (var mine in resourceMines)
     {
         mine.OnResourceMined += AddItemToInventory;
         mine.Initialize();
     }
 }
예제 #5
0
 public void Awake()
 {
     inventoryManager = this.GetComponent <PlayerInventoryManager>();
     miningManager    = this.GetComponent <MiningManager>();
     if (_instance != null)
     {
         Debug.LogError("Multiple PlayerManager instances found! Overriding existing instance.");
     }
     _instance = this;
 }
        private static async Task <bool> StopMining()
        {
            await MiningManager.StopAllMiners();

            StopComputeDevicesCheckTimer();
            StopInternetCheckTimer();
            DisplayNoInternetConnection(false); // hide warning
            DisplayMiningProfitable(true);      // hide warning
            return(true);
        }
 private static void StartMinerStatsCheckTimer()
 {
     if (_minerStatsCheck?.IsActive ?? false)
     {
         return;
     }
     _minerStatsCheck = new AppTimer(async(object sender, ElapsedEventArgs e) =>
     {
         await MiningManager.MinerStatsCheck();
     },
                                     ConfigManager.GeneralConfig.MinerAPIQueryInterval * 1000);
     _minerStatsCheck.Start();
 }
예제 #8
0
        //public static bool StartDemoMining()
        //{
        //    StopMinerStatsCheckTimer();
        //    return false;
        //}

        private static bool StopMining(bool headless)
        {
            MiningManager.StopAllMiners();

            PInvoke.PInvokeHelpers.AllowMonitorPowerdownAndSleep();
            StopMinerStatsCheckTimer();
            StopComputeDevicesCheckTimer();
            StopPreventSleepTimer();
            StopInternetCheckTimer();
            DisplayNoInternetConnection(false); // hide warning
            DisplayMiningProfitable(true);      // hide warning
            return(true);
        }
예제 #9
0
        private static void UpdateDevicesToMine()
        {
            var allDevs       = AvailableDevices.Devices;
            var devicesToMine = allDevs.Where(dev => dev.State == DeviceState.Mining).ToList();

            if (devicesToMine.Count > 0)
            {
                StartMining();
                MiningManager.UpdateMiningSession(devicesToMine, GetUsername());
            }
            else
            {
                StopMining(false);
            }
        }
예제 #10
0
        internal static async Task <(bool stopped, string failReason)> StopDeviceTask(ComputeDevice device)
        {
            device.StartState = false;
            // we can only stop a device it is mining or benchmarking
            switch (device.State)
            {
            case DeviceState.Stopped:
                return(false, $"Device {device.Uuid} already stopped");

            case DeviceState.Mining:
            case DeviceState.Benchmarking:
                await MiningManager.StopDevice(device);

                return(true, "");

            default:
                return(false, $"Cannot handle state {device.State} for device {device.Uuid}");
            }
        }
예제 #11
0
        private void Start_button_Click(object sender, EventArgs e)
        {
            Extract_label.Text = "Extracting frequent patterns...";
            Extract_label.Refresh();
            InitializeConfiguration();
            Start_button.Enabled = false;
            _managerDataMining.AlgorithmManager.MiningAlgorithms[combo_algoritmo.SelectedIndex].SetMinSup(_managerDataMining.AlgorithmManager.Minsupp);
            List <ItemSet> result = _managerDataMining.AlgorithmManager.MiningAlgorithms[combo_algoritmo.SelectedIndex].ExtractFrequentPattern(_transazioniItemset);

            _rules.Clear();
            _rules             = _managerDataMining.GenerateAssociationRuleBase(result, this._transazioniItemset.Count);
            _managerDataMining = new MiningManager();
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Show_button.Enabled = true;

            this._transazioniItemset = null;

            Extract_label.Text = "Patterns extracted";
            Extract_label.Refresh();
        }
예제 #12
0
        internal static async Task <(bool started, string failReason)> StartDeviceTask(ComputeDevice device)
        {
            device.StartState = true;
            // we can only start a device it is already stopped
            if (device.State == DeviceState.Disabled)
            {
                return(false, "Device is disabled");
            }

            if (device.State != DeviceState.Stopped && device.State != DeviceState.Error)
            {
                return(false, "Device already started");
            }

            var started               = true;
            var failReason            = "";
            var allAlgorithmsDisabled = !device.AnyAlgorithmEnabled();
            var isAllZeroPayingState  = device.AllEnabledAlgorithmsZeroPaying();
            // check if device has any benchmakrs
            var needBenchmarkOrRebench = device.AnyEnabledAlgorithmsNeedBenchmarking();

            if (allAlgorithmsDisabled)
            {
                device.State = DeviceState.Error;
                started      = false;
                failReason   = "Cannot start a device with all disabled algoirhtms";
            }
            else if (isAllZeroPayingState && !needBenchmarkOrRebench)
            {
                device.State = DeviceState.Error;
                started      = false;
                failReason   = "No enabled algorithm is profitable";
            }
            else
            {
                await MiningManager.StartDevice(device);
            }

            return(started, failReason);
        }
        private static void DeviceStatus_Tick(object state)
        {
            var devices    = AvailableDevices.Devices;
            var deviceList = new List <JArray>();
            var activeIDs  = MiningManager.GetActiveMinersIndexes();

            foreach (var device in devices)
            {
                try
                {
                    var array = new JArray
                    {
                        device.Index,
                        device.Name
                    };
                    var status = Convert.ToInt32(activeIDs.Contains(device.Index)) + ((int)device.DeviceType + 1) * 2;
                    array.Add(status);
                    array.Add((int)Math.Round(device.Load));
                    array.Add((int)Math.Round(device.Temp));
                    array.Add(device.FanSpeed);

                    deviceList.Add(array);
                }
                catch (Exception e) {
                    NiceHashMinerLegacy.Common.Logger.Error("SOCKET", e.ToString());
                }
            }
            var data = new DeviceStatusMessage
            {
                devices = deviceList
            };
            var sendData = JsonConvert.SerializeObject(data);

            // This function is run every minute and sends data every run which has two auxiliary effects
            // Keeps connection alive and attempts reconnection if internet was dropped
            _socket?.SendData(sendData);
        }
예제 #14
0
        private async Task Benchmark()
        {
            bool showFailed  = false;
            bool startMining = false;

            _stopBenchmark = CancellationTokenSource.CreateLinkedTokenSource(ApplicationStateManager.ExitApplication.Token);
            try
            {
                foreach (var a in _algorithms)
                {
                    a.SetBenchmarkPending();
                }
                var benchAlgos = new Queue <AlgorithmContainer>(_algorithms);
                //BenchmarkingHandlers.TryAdd(Device, this);
                // whole benchmark scope
                var commandTask = GetCommand(_stopBenchmark.Token);
                // Until container is not empty
                while (benchAlgos.Any() && !_stopBenchmark.IsCancellationRequested)
                {
                    // per algo benchmark scope
                    bool?benchmarkSuccess = null;
                    _stopCurrentAlgorithmBenchmark = CancellationTokenSource.CreateLinkedTokenSource(_stopBenchmark.Token);
                    try
                    {
                        var nextAlgo      = benchAlgos.Dequeue();
                        var benchmark     = BenchmarkAlgorithm(nextAlgo, _stopCurrentAlgorithmBenchmark.Token);
                        var firstFinished = await Task.WhenAny(new Task <object>[] { commandTask, benchmark });

                        var ret = await firstFinished;
                        if (ret is IReadOnlyList <AlgorithmContainer> updatedAlgorithms)
                        {
                            commandTask = GetCommand(_stopBenchmark.Token);
                            var stop           = _algorithms.Except(updatedAlgorithms).Any(algo => algo == nextAlgo);
                            var restAlgorithms = updatedAlgorithms.Where(algo => algo != nextAlgo).ToArray();
                            // update Algorithms
                            _algorithms = restAlgorithms;
                            foreach (var a in _algorithms)
                            {
                                a.SetBenchmarkPending();
                            }
                            // updated
                            benchAlgos = new Queue <AlgorithmContainer>(_algorithms);
                            if (stop)
                            {
                                // THIS Throws
                                _stopCurrentAlgorithmBenchmark.Cancel();
                            }
                            else
                            {
                                // wait for the current benchmark to finish
                                ret = await benchmark;
                            }
                        }
                        if (ret is bool success)
                        {
                            benchmarkSuccess = success;
                        }
                        // this will drain the container
                        await Task.Delay(MiningSettings.Instance.MinerRestartDelayMS, _stopCurrentAlgorithmBenchmark.Token);
                    }
                    catch (TaskCanceledException e)
                    {
                        Logger.Debug("BenchmarkingDevice", $"TaskCanceledException occurred in benchmark task: {e.Message}");
                    }
                    catch (Exception e)
                    {
                        Logger.Error("BenchmarkingDevice", $"Exception occurred in benchmark task: {e.Message}");
                    }
                    finally
                    {
                        _stopCurrentAlgorithmBenchmark.Dispose();
                        if (!_stopCurrentAlgorithmBenchmark.IsCancellationRequested && benchmarkSuccess.HasValue && !benchmarkSuccess.Value)
                        {
                            showFailed = true;
                        }
                    }
                }
                startMining = !_stopBenchmark.IsCancellationRequested;
                // clear what we didn't benchmark
                while (benchAlgos.Any())
                {
                    var nextAlgo = benchAlgos.Dequeue();
                    nextAlgo.ClearBenchmarkPending();
                }
                if (showFailed)
                {
                    AvailableNotifications.CreateFailedBenchmarksInfo(Device);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("BenchmarkingDevice2", $"Exception occurred in benchmark task: {ex.Message}");
            }
            finally
            {
                _stopBenchmark.Dispose();
                if (startMining)
                {
                    _ = MiningManager.StartDevice(Device); // important do not await
                }
                else
                {
                    Device.State = DeviceState.Stopped;
                }
            }
        }
예제 #15
0
 public TransactionsController(IRepository <SignedTransaction> transactionsRepository, IHashLibrary hashLibrary, MiningManager miningManager)
 {
     this.transactionsRepository = transactionsRepository;
     this.hashLibrary            = hashLibrary;
     this.miningManager          = miningManager;
 }