Пример #1
0
 public MainWindowViewModel()
 {
     if (Design.IsInDesignMode)
     {
         return;
     }
     this.CloseMainWindow = new DelegateCommand(() => {
         if (MinerProfile.IsNoUi)
         {
             VirtualRoot.Execute(new CloseMainWindowCommand());
         }
         else
         {
             VirtualRoot.Execute(new CloseNTMinerCommand());
         }
     });
     this.CustomTheme = new DelegateCommand(() => {
         LogColor.ShowWindow();
     });
     this.UseThisPcName = new DelegateCommand(() => {
         string thisPcName = NTMinerRoot.GetThisPcName();
         DialogWindow.ShowDialog(message: $"确定使用本机名{thisPcName}作为矿机名吗?", title: "确认", onYes: () => {
             MinerProfile.MinerName = thisPcName;
         }, icon: IconConst.IconConfirm);
     });
     if (DevMode.IsDevMode)
     {
         _serverJsonVersion = GetServerJsonVersion();
     }
 }
Пример #2
0
 private void Init()
 {
     lock (_locker) {
         if (!_isInited)
         {
             var repository = NTMinerRoot.CreateServerRepository <KernelOutputTranslaterData>();
             foreach (var item in repository.GetAll())
             {
                 if (!_dicById.ContainsKey(item.GetId()))
                 {
                     _dicById.Add(item.GetId(), item);
                 }
                 if (!_dicByKernelOutputId.ContainsKey(item.KernelOutputId))
                 {
                     _dicByKernelOutputId.Add(item.KernelOutputId, new List <KernelOutputTranslaterData>());
                 }
                 if (_dicByKernelOutputId[item.KernelOutputId].All(a => a.GetId() != item.GetId()))
                 {
                     _dicByKernelOutputId[item.KernelOutputId].Add(item);
                 }
             }
             foreach (var item in _dicByKernelOutputId.Values)
             {
                 item.Sort(new SortNumberComparer());
             }
             _isInited = true;
         }
     }
 }
Пример #3
0
 private void Init()
 {
     lock (_locker) {
         if (!_isInited)
         {
             var repository = NTMinerRoot.CreateServerRepository <KernelOutputFilterData>(_isUseJson);
             foreach (var item in repository.GetAll())
             {
                 if (!_dicById.ContainsKey(item.GetId()))
                 {
                     _dicById.Add(item.GetId(), item);
                 }
                 if (!_dicByKernelOutputId.ContainsKey(item.KernelOutputId))
                 {
                     _dicByKernelOutputId.Add(item.KernelOutputId, new List <KernelOutputFilterData>());
                 }
                 if (_dicByKernelOutputId[item.KernelOutputId].All(a => a.GetId() != item.GetId()))
                 {
                     _dicByKernelOutputId[item.KernelOutputId].Add(item);
                 }
             }
             _isInited = true;
         }
     }
 }
Пример #4
0
 private MainWindowViewModel()
 {
     if (Design.IsInDesignMode)
     {
         return;
     }
     this.StartMine = new DelegateCommand(() => {
         this.StateBarVm.IsMining = true;
         NTMinerRoot.Current.StartMine();
     });
     this.StopMine = new DelegateCommand(() => {
         if (!NTMinerRoot.Current.IsMining)
         {
             this.StateBarVm.IsMining = false;
         }
         NTMinerRoot.Current.StopMineAsync();
     });
     this.UseThisPcName = new DelegateCommand(() => {
         string thisPcName = NTMinerRoot.GetThisPcName();
         DialogWindow.ShowDialog(message: $"确定使用本机名{thisPcName}作为矿机名吗?", title: "确认", onYes: () => {
             MinerProfile.MinerName = thisPcName;
         }, icon: IconConst.IconConfirm);
     });
     if (DevMode.IsDevMode)
     {
         VirtualRoot.On <ServerJsonVersionChangedEvent>("在开发者调试区展示ServerJsonVersion", LogEnum.DevConsole,
                                                        action: message => {
             this.ServerJsonVersion = NTMinerRoot.JsonFileVersion;
         });
         _serverJsonVersion = NTMinerRoot.JsonFileVersion;
     }
 }
Пример #5
0
                private static CoinProfileData GetCoinProfileData(Guid coinId)
                {
                    var repository = NTMinerRoot.CreateLocalRepository <CoinProfileData>();
                    var result     = repository.GetByKey(coinId);

                    return(result);
                }
Пример #6
0
 private void Init()
 {
     lock (_locker) {
         if (!_isInited)
         {
             var repository = NTMinerRoot.CreateCompositeRepository <SysDicItemData>(_isUseJson);
             foreach (var item in repository.GetAll())
             {
                 if (!_dicById.ContainsKey(item.GetId()))
                 {
                     _dicById.Add(item.GetId(), item);
                 }
                 if (!_dicByDicId.ContainsKey(item.DicId))
                 {
                     _dicByDicId.Add(item.DicId, new Dictionary <string, SysDicItemData>(StringComparer.OrdinalIgnoreCase));
                 }
                 if (!_dicByDicId[item.DicId].ContainsKey(item.Code))
                 {
                     _dicByDicId[item.DicId].Add(item.Code, item);
                 }
             }
             _isInited = true;
         }
     }
 }
Пример #7
0
 private void Init()
 {
     lock (_locker) {
         if (!_isInited)
         {
             var repository             = NTMinerRoot.CreateServerRepository <PoolKernelData>();
             List <PoolKernelData> list = repository.GetAll().ToList();
             foreach (IPool pool in _root.PoolSet)
             {
                 foreach (ICoinKernel coinKernel in _root.CoinKernelSet.Where(a => a.CoinId == pool.CoinId))
                 {
                     PoolKernelData poolKernel = list.FirstOrDefault(a => a.PoolId == pool.GetId() && a.KernelId == coinKernel.KernelId);
                     if (poolKernel != null)
                     {
                         _dicById.Add(poolKernel.GetId(), poolKernel);
                     }
                     else
                     {
                         Guid poolKernelId = Guid.NewGuid();
                         _dicById.Add(poolKernelId, new PoolKernelData()
                         {
                             Id          = poolKernelId,
                             Args        = string.Empty,
                             Description = string.Empty,
                             KernelId    = coinKernel.KernelId,
                             PoolId      = pool.GetId()
                         });
                     }
                 }
             }
             _isInited = true;
         }
     }
 }
Пример #8
0
        private VirtualMemorySetViewModel()
        {
#if DEBUG
            NTStopwatch.Start();
#endif
            foreach (var item in GetPagingFiles())
            {
                _initialVms.Add(item.DriveName, item);
            }
            foreach (var drive in AppContext.Instance.DriveSetVm.Drives)
            {
                _dic.Add(drive.Name, new VirtualMemoryViewModel(drive.Name, 0));
            }
            foreach (var item in _initialVms.Values)
            {
                if (_dic.TryGetValue(item.DriveName, out VirtualMemoryViewModel vm))
                {
                    vm.MaxSizeMb = item.MaxSizeMb;
                }
            }
            NTMinerRoot.SetOSVirtualMemoryMb(_dic.Values.Sum(a => a.MaxSizeMb));
#if DEBUG
            var elapsedMilliseconds = NTStopwatch.Stop();
            if (elapsedMilliseconds.ElapsedMilliseconds > NTStopwatch.ElapsedMilliseconds)
            {
                Write.DevTimeSpan($"耗时{elapsedMilliseconds} {this.GetType().Name}.ctor");
            }
#endif
        }
Пример #9
0
 private void Init()
 {
     lock (_locker) {
         if (!_isInited)
         {
             var             repository = NTMinerRoot.CreateCompositeRepository <PoolData>();
             List <PoolData> data       = repository.GetAll().ToList();
             if (VirtualRoot.IsMinerStudio)
             {
                 foreach (var item in Server.PoolService.GetPools())
                 {
                     data.Add(item);
                 }
             }
             foreach (var item in data)
             {
                 if (!_dicById.ContainsKey(item.GetId()))
                 {
                     _dicById.Add(item.GetId(), item);
                 }
             }
             _isInited = true;
         }
     }
 }
Пример #10
0
                private static CoinProfileData GetCoinProfileData(MineWorkData mineWorkData, Guid coinId)
                {
                    bool isUseJson = mineWorkData != null;
                    IRepository <CoinProfileData> repository = NTMinerRoot.CreateLocalRepository <CoinProfileData>(isUseJson);
                    var result = repository.GetByKey(coinId);

                    return(result);
                }
Пример #11
0
 private void Init(INTMinerRoot root, MineWorkData mineWorkData)
 {
     MineWork  = mineWorkData;
     isUseJson = mineWorkData != null;
     if (isUseJson)
     {
         _data = NTMinerRoot.LocalJson.MinerProfile;
     }
     else
     {
         IRepository <MinerProfileData> repository = NTMinerRoot.CreateLocalRepository <MinerProfileData>(false);
         _data = repository.GetAll().FirstOrDefault();
     }
     if (_data == null)
     {
         Guid  coinId = Guid.Empty;
         ICoin coin   = root.CoinSet.OrderBy(a => a.SortNumber).FirstOrDefault();
         if (coin != null)
         {
             coinId = coin.GetId();
         }
         _data = MinerProfileData.CreateDefaultData(coinId);
     }
     if (_coinProfileSet == null)
     {
         _coinProfileSet = new CoinProfileSet(root, mineWorkData);
     }
     else
     {
         _coinProfileSet.Refresh(mineWorkData);
     }
     if (_coinKernelProfileSet == null)
     {
         _coinKernelProfileSet = new CoinKernelProfileSet(root, mineWorkData);
     }
     else
     {
         _coinKernelProfileSet.Refresh(mineWorkData);
     }
     if (_poolProfileSet == null)
     {
         _poolProfileSet = new PoolProfileSet(root, mineWorkData);
     }
     else
     {
         _poolProfileSet.Refresh(mineWorkData);
     }
     if (_walletSet == null)
     {
         _walletSet = new WalletSet(root);
     }
     else
     {
         _walletSet.Refresh();
     }
 }
Пример #12
0
                private static CoinKernelProfileData GetCoinKernelProfileData(Guid coinKernelId)
                {
                    IRepository <CoinKernelProfileData> repository = NTMinerRoot.CreateLocalRepository <CoinKernelProfileData>();
                    var result = repository.GetByKey(coinKernelId);

                    if (result == null)
                    {
                        result = CoinKernelProfileData.CreateDefaultData(coinKernelId);
                    }
                    return(result);
                }
Пример #13
0
        public void SetVirtualMemoryOfDrive()
        {
            List <VirtualMemoryViewModel> virtualMemories = _dic.Values.Where(a => a.MaxSizeMb != 0).ToList();

            string[] value = virtualMemories.Select(a => a.ToString()).ToArray();

            Windows.WinRegistry.SetValue(Registry.LocalMachine, MemoryManagementSubKey, "PagingFiles", value);
            OnPropertyChanged(nameof(TotalVirtualMemoryMb));
            OnPropertyChanged(nameof(IsStateChanged));
            NTMinerRoot.SetOSVirtualMemoryMb(_dic.Values.Sum(a => a.MaxSizeMb));
        }
Пример #14
0
 private void AddWallet(WalletData entity)
 {
     if (VirtualRoot.IsMinerStudio)
     {
         Server.ControlCenterService.AddOrUpdateWalletAsync(entity, null);
     }
     else
     {
         var repository = NTMinerRoot.CreateLocalRepository <WalletData>();
         repository.Add(entity);
     }
 }
Пример #15
0
                private static CoinKernelProfileData GetCoinKernelProfileData(MineWorkData mineWorkData, Guid coinKernelId)
                {
                    bool isUseJson = mineWorkData != null;
                    IRepository <CoinKernelProfileData> repository = NTMinerRoot.CreateLocalRepository <CoinKernelProfileData>(isUseJson);
                    var result = repository.GetByKey(coinKernelId);

                    if (result == null)
                    {
                        result = CoinKernelProfileData.CreateDefaultData(coinKernelId);
                    }
                    return(result);
                }
Пример #16
0
        public PoolKernelSet(INTMinerRoot root, bool isUseJson)
        {
            _root      = root;
            _isUseJson = isUseJson;
            VirtualRoot.Window <AddPoolKernelCommand>("处理添加矿池级内核命令", LogEnum.DevConsole,
                                                      action: message => {
                if (!_dicById.ContainsKey(message.Input.GetId()))
                {
                    var entity = new PoolKernelData().Update(message.Input);
                    _dicById.Add(message.Input.GetId(), entity);
                    var repository = NTMinerRoot.CreateServerRepository <PoolKernelData>(isUseJson);
                    repository.Add(entity);
                    VirtualRoot.Happened(new PoolKernelAddedEvent(message.Input));
                }
            }).AddToCollection(root.ContextHandlers);
            VirtualRoot.Window <RemovePoolKernelCommand>("处理移除矿池级内核命令", LogEnum.DevConsole,
                                                         action: message => {
                if (_dicById.ContainsKey(message.EntityId))
                {
                    var entity = _dicById[message.EntityId];
                    _dicById.Remove(message.EntityId);
                    var repository = NTMinerRoot.CreateServerRepository <PoolKernelData>(isUseJson);
                    repository.Remove(message.EntityId);
                    VirtualRoot.Happened(new PoolKernelRemovedEvent(entity));
                }
            }).AddToCollection(root.ContextHandlers);
            VirtualRoot.Window <UpdatePoolKernelCommand>("更新矿池内核", LogEnum.DevConsole,
                                                         action: (message) => {
                InitOnece();
                if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (!_root.PoolSet.Contains(message.Input.PoolId))
                {
                    throw new ValidationException("there is no pool with id" + message.Input.PoolId);
                }
                if (!_dicById.ContainsKey(message.Input.GetId()))
                {
                    return;
                }
                PoolKernelData entity = _dicById[message.Input.GetId()];
                if (ReferenceEquals(entity, message.Input))
                {
                    return;
                }
                entity.Update(message.Input);
                var repository = NTMinerRoot.CreateServerRepository <PoolKernelData>(isUseJson);
                repository.Update(entity);

                VirtualRoot.Happened(new PoolKernelUpdatedEvent(entity));
            }).AddToCollection(root.ContextHandlers);
        }
Пример #17
0
 private void RemoveWallet(Guid id)
 {
     if (VirtualRoot.IsMinerStudio)
     {
         Server.ControlCenterService.RemoveWalletAsync(id, null);
     }
     else
     {
         var repository = NTMinerRoot.CreateLocalRepository <WalletData>(isUseJson: false);
         repository.Remove(id);
     }
 }
Пример #18
0
 private void RemoveWallet(Guid id)
 {
     if (VirtualRoot.IsMinerStudio)
     {
         RpcRoot.Server.WalletService.RemoveWalletAsync(id, null);
     }
     else
     {
         var repository = NTMinerRoot.CreateLocalRepository <WalletData>();
         repository.Remove(id);
     }
 }
Пример #19
0
 private void UpdateWallet(WalletData entity)
 {
     if (VirtualRoot.IsMinerStudio)
     {
         RpcRoot.Server.WalletService.AddOrUpdateWalletAsync(entity, null);
     }
     else
     {
         var repository = NTMinerRoot.CreateLocalRepository <WalletData>();
         repository.Update(entity);
     }
 }
Пример #20
0
 private void RemoveWallet(Guid id)
 {
     if (UseRemoteWalletList)
     {
         Server.ControlCenterService.RemoveWallet(id, null);
     }
     else
     {
         var repository = NTMinerRoot.CreateLocalRepository <WalletData>();
         repository.Remove(id);
     }
 }
Пример #21
0
 private void UpdateWallet(WalletData entity)
 {
     if (UseRemoteWalletList)
     {
         Server.ControlCenterService.AddOrUpdateWallet(entity, null);
     }
     else
     {
         var repository = NTMinerRoot.CreateLocalRepository <WalletData>();
         repository.Update(entity);
     }
 }
Пример #22
0
        public PoolKernelSet(IServerContext context)
        {
            _context = context;
            _context.AddCmdPath <AddPoolKernelCommand>("处理添加矿池级内核命令", LogEnum.DevConsole,
                                                       action: message => {
                if (!_dicById.ContainsKey(message.Input.GetId()))
                {
                    var entity = new PoolKernelData().Update(message.Input);
                    _dicById.Add(message.Input.GetId(), entity);
                    var repository = NTMinerRoot.CreateServerRepository <PoolKernelData>();
                    repository.Add(entity);
                    VirtualRoot.RaiseEvent(new PoolKernelAddedEvent(message.MessageId, message.Input));
                }
            }, location: this.GetType());
            _context.AddCmdPath <RemovePoolKernelCommand>("处理移除矿池级内核命令", LogEnum.DevConsole,
                                                          action: message => {
                if (_dicById.ContainsKey(message.EntityId))
                {
                    var entity = _dicById[message.EntityId];
                    _dicById.Remove(message.EntityId);
                    var repository = NTMinerRoot.CreateServerRepository <PoolKernelData>();
                    repository.Remove(message.EntityId);
                    VirtualRoot.RaiseEvent(new PoolKernelRemovedEvent(message.MessageId, entity));
                }
            }, location: this.GetType());
            _context.AddCmdPath <UpdatePoolKernelCommand>("更新矿池内核", LogEnum.DevConsole,
                                                          action: (message) => {
                InitOnece();
                if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (!_context.PoolSet.Contains(message.Input.PoolId))
                {
                    throw new ValidationException("there is no pool with id" + message.Input.PoolId);
                }
                if (!_dicById.ContainsKey(message.Input.GetId()))
                {
                    return;
                }
                PoolKernelData entity = _dicById[message.Input.GetId()];
                if (ReferenceEquals(entity, message.Input))
                {
                    return;
                }
                entity.Update(message.Input);
                var repository = NTMinerRoot.CreateServerRepository <PoolKernelData>();
                repository.Update(entity);

                VirtualRoot.RaiseEvent(new PoolKernelUpdatedEvent(message.MessageId, entity));
            }, location: this.GetType());
        }
Пример #23
0
        private void Init(INTMinerRoot root)
        {
            IRepository <MinerProfileData> minerProfileRepository = NTMinerRoot.CreateLocalRepository <MinerProfileData>();

            _data = minerProfileRepository.GetAll().FirstOrDefault();
            IRepository <MineWorkData> mineWorkRepository = NTMinerRoot.CreateLocalRepository <MineWorkData>();

            MineWork = mineWorkRepository.GetAll().FirstOrDefault();
            if (_data == null)
            {
                Guid  coinId = Guid.Empty;
                ICoin coin   = root.CoinSet.OrderBy(a => a.Code).FirstOrDefault();
                if (coin != null)
                {
                    coinId = coin.GetId();
                }
                _data = MinerProfileData.CreateDefaultData(coinId);
            }
            if (_coinProfileSet == null)
            {
                _coinProfileSet = new CoinProfileSet(root);
            }
            else
            {
                _coinProfileSet.Refresh();
            }
            if (_coinKernelProfileSet == null)
            {
                _coinKernelProfileSet = new CoinKernelProfileSet(root);
            }
            else
            {
                _coinKernelProfileSet.Refresh();
            }
            if (_poolProfileSet == null)
            {
                _poolProfileSet = new PoolProfileSet(root);
            }
            else
            {
                _poolProfileSet.Refresh();
            }
            if (_walletSet == null)
            {
                _walletSet = new WalletSet(root);
            }
            else
            {
                _walletSet.Refresh();
            }
        }
Пример #24
0
                private static PoolProfileData GetPoolProfileData(INTMinerRoot root, Guid poolId)
                {
                    IRepository <PoolProfileData> repository = NTMinerRoot.CreateLocalRepository <PoolProfileData>();
                    var result = repository.GetByKey(poolId);

                    if (result == null)
                    {
                        if (root.PoolSet.TryGetPool(poolId, out IPool pool))
                        {
                            // 如果本地未设置用户名密码则使用默认的测试用户名密码
                            result = PoolProfileData.CreateDefaultData(pool);
                        }
                    }
                    return(result);
                }
Пример #25
0
        protected override void OnContentRendered(EventArgs e)
        {
            base.OnContentRendered(e);
            System.Windows.Forms.Keys hotKey = System.Windows.Forms.Keys.X;
            Enum.TryParse(NTMinerRoot.GetHotKey(), out hotKey);
            string message;

            if (!RegHotKey(hotKey, out message))
            {
                NotiCenterWindowViewModel.Current.Manager
                .CreateMessage()
                .Error(message)
                .Dismiss().WithButton("忽略", null)
                .Queue();
            }
        }
Пример #26
0
        public CoinGroupSet(INTMinerRoot root)
        {
            _root = root;
            Global.Access <AddCoinGroupCommand>(
                Guid.Parse("2dd8f7e9-c79d-4621-954f-9fc45b0207dd"),
                "添加币组",
                LogEnum.Log,
                action: (message) => {
                InitOnece();
                if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (_dicById.ContainsKey(message.Input.GetId()))
                {
                    return;
                }
                CoinGroupData entity = new CoinGroupData().Update(message.Input);
                _dicById.Add(entity.Id, entity);
                var repository = NTMinerRoot.CreateServerRepository <CoinGroupData>();
                repository.Add(entity);

                Global.Happened(new CoinGroupAddedEvent(entity));
            });
            Global.Access <RemoveCoinGroupCommand>(
                Guid.Parse("e52874f4-37d8-4d49-a637-5b95aa89367e"),
                "移除币组",
                LogEnum.Log,
                action: (message) => {
                InitOnece();
                if (message == null || message.EntityId == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (!_dicById.ContainsKey(message.EntityId))
                {
                    return;
                }
                CoinGroupData entity = _dicById[message.EntityId];
                _dicById.Remove(entity.GetId());
                var repository = NTMinerRoot.CreateServerRepository <CoinGroupData>();
                repository.Remove(message.EntityId);

                Global.Happened(new CoinGroupRemovedEvent(entity));
            });
            Global.Logger.InfoDebugLine(this.GetType().FullName + "接入总线");
        }
Пример #27
0
 private void Init()
 {
     lock (_locker) {
         if (!_isInited)
         {
             var repository = NTMinerRoot.CreateCompositeRepository <KernelOutputKeywordData>(_isUseJson);
             foreach (var item in repository.GetAll())
             {
                 if (!_dicById.ContainsKey(item.GetId()))
                 {
                     _dicById.Add(item.GetId(), item);
                 }
             }
             _isInited = true;
         }
     }
 }
Пример #28
0
 private void Init()
 {
     lock (_locker) {
         if (!_isInited)
         {
             var repository = NTMinerRoot.CreateServerRepository <CoinKernelData>();
             foreach (var item in repository.GetAll())
             {
                 if (!_dicById.ContainsKey(item.GetId()))
                 {
                     _dicById.Add(item.GetId(), item);
                 }
             }
             _isInited = true;
         }
     }
 }
Пример #29
0
 private MinerProfileData GetMinerProfileData()
 {
     if (CommandLineArgs.IsWorker)
     {
         return(Server.ProfileService.GetMinerProfile(CommandLineArgs.WorkId));
     }
     else
     {
         IRepository <MinerProfileData> repository = NTMinerRoot.CreateLocalRepository <MinerProfileData>();
         var result = repository.GetAll().FirstOrDefault();
         if (result == null)
         {
             result = MinerProfileData.CreateDefaultData();
         }
         return(result);
     }
 }
Пример #30
0
 private CoinProfileData GetCoinProfileData(Guid coinId)
 {
     if (CommandLineArgs.IsWorker)
     {
         return(Server.ProfileService.GetCoinProfile(CommandLineArgs.WorkId, coinId));
     }
     else
     {
         IRepository <CoinProfileData> repository = NTMinerRoot.CreateLocalRepository <CoinProfileData>();
         var result = repository.GetByKey(coinId);
         if (result == null)
         {
             result = CoinProfileData.CreateDefaultData(coinId);
         }
         return(result);
     }
 }