Esempio n. 1
0
            public void QueryClientsAsync(
                int pageIndex,
                int pageSize,
                Guid?groupId,
                Guid?workId,
                string minerIp,
                string minerName,
                MineStatus mineState,
                string coin,
                string pool,
                string wallet,
                string version,
                string kernel,
                Action <QueryClientsResponse, Exception> callback)
            {
                var request = new QueryClientsRequest {
                    LoginName = SingleUser.LoginName,
                    PageIndex = pageIndex,
                    PageSize  = pageSize,
                    GroupId   = groupId,
                    WorkId    = workId,
                    MinerIp   = minerIp,
                    MinerName = minerName,
                    MineState = mineState,
                    Coin      = coin,
                    Pool      = pool,
                    Wallet    = wallet,
                    Version   = version,
                    Kernel    = kernel
                };

                request.SignIt(SingleUser.PasswordSha1);
                PostAsync(SControllerName, nameof(IControlCenterController.QueryClients), null, request, callback);
            }
Esempio n. 2
0
        public void QueryClientsAsync(
            int pageIndex,
            int pageSize,
            Guid?groupId,
            Guid?workId,
            string minerIp,
            string minerName,
            MineStatus mineState,
            string coin,
            string pool,
            string wallet,
            string version,
            string kernel,
            Action <QueryClientsResponse, Exception> callback)
        {
            var request = new QueryClientsRequest {
                PageIndex = pageIndex,
                PageSize  = pageSize,
                GroupId   = groupId,
                WorkId    = workId,
                MinerIp   = minerIp,
                MinerName = minerName,
                MineState = mineState,
                Coin      = coin,
                Pool      = pool,
                Wallet    = wallet,
                Version   = version,
                Kernel    = kernel
            };

            RpcRoot.PostAsync(NTMinerRegistry.GetControlCenterHost(), NTKeyword.ControlCenterPort, _controllerName, nameof(IClientController.QueryClients), request, request, callback);
        }
Esempio n. 3
0
 void Awake()
 {
     firstClick = true;
     renderer.material.color = Color.green;
     mineText.text           = "";
     mineCollider            = GetComponent <BoxCollider>();
     CurrentMineStatus       = MineStatus.Normal;
 }
        /* Search current spot for a mine */
        public void searchMine(int x, int y)
        {
            MineStatus s = data.status[x, y];

            /* Start timer on first click */
            if (data.clickedCount == 0)
            {
                data.startTime = DateTime.Now;
                timerRunning(true);
                data.currTime = 0;
            }

            /* Update given location status */
            if (s == MineStatus.UNCLICKED || s == MineStatus.QUESTION)
            {
                data.status[x, y] = MineStatus.CLICKED;
                if (data.mines[x, y] == 0)
                {
                    data.clickedCount++;
                    for (int i = Math.Max(0, x - 1); i <= Math.Min(x + 1, data.width - 1); i++)
                    {
                        for (int j = Math.Max(0, y - 1); j <= Math.Min(y + 1, data.height - 1); j++)
                        {
                            searchMine(i, j);
                        }
                    }
                }
                else if (data.mines[x, y] == -1)
                {
                    data.gameStatus = GameStatus.LOST;
                    timerRunning(false);
                    showMines();
                }
                else
                {
                    data.clickedCount++;
                }

                /* Determine if game was won */
                if (data.clickedCount + data.mineCount == data.width * data.height)
                {
                    data.gameStatus = GameStatus.WON;
                    showFlags();
                    data.flagCount = data.mineCount;
                    data.gameTime  = (DateTime.Now - data.startTime).TotalSeconds;
                    timerRunning(false);
                    if (isHighscore(data.gameTime, data.level))
                    {
                        string name = "Anonymous";
                        /* prompt user for name */
                        //name = getPlayerName();
                        updateHighscore(name, data.gameTime, data.level);
                    }
                }
                updateSpot(x, y);
            }
        }
        public IActionResult MineStatus(Guid mineId)
        {
            var mineStatus = new MineStatus()
            {
                State        = MineStatusCompleted,
                MessageCount = 100
            };

            return(Ok(mineStatus));
        }
Esempio n. 6
0
 /* Create new game */
 public void newGame(int width_, int height_, int mines_)
 {
     width        = width_;
     height       = height_;
     mineCount    = mines_;
     flagCount    = 0;
     clickedCount = 0;
     currTime     = 0;
     gameStatus   = GameStatus.PLAY;
     status       = new MineStatus[width, height];
     genMines();
 }
 public void QueryClients(
     int pageIndex,
     int pageSize,
     Guid?mineWorkId,
     string minerIp,
     string minerName,
     MineStatus mineState,
     string mainCoin,
     string mainCoinPool,
     string mainCoinWallet,
     string dualCoin,
     string dualCoinPool,
     string dualCoinWallet,
     Action <QueryClientsResponse> callback)
 {
     Task.Factory.StartNew(() => {
         Guid messageId = Guid.NewGuid();
         try {
             using (var service = CreateService()) {
                 var request = new QueryClientsRequest {
                     LoginName      = LoginName,
                     PageIndex      = pageIndex,
                     PageSize       = pageSize,
                     MineWorkId     = mineWorkId,
                     MinerIp        = minerIp,
                     MinerName      = minerName,
                     MineState      = mineState,
                     MainCoin       = mainCoin,
                     MainCoinPool   = mainCoinPool,
                     MainCoinWallet = mainCoinWallet,
                     DualCoin       = dualCoin,
                     DualCoinPool   = dualCoinPool,
                     DualCoinWallet = dualCoinWallet,
                     Timestamp      = DateTime.Now
                 };
                 request.SignIt(Password);
                 QueryClientsResponse response = service.QueryClients(request);
                 callback?.Invoke(response);
             }
         }
         catch (CommunicationException e) {
             Global.DebugLine(e.Message, ConsoleColor.Red);
             callback?.Invoke(QueryClientsResponse.ClientError(messageId, e.Message));
         }
         catch (Exception e) {
             Global.Logger.Error(e.Message, e);
             callback?.Invoke(QueryClientsResponse.ClientError(messageId, e.Message));
         }
     });
 }
Esempio n. 8
0
 void OnMouseOver()
 {
     if (CurrentMineStatus != MineStatus.Clear)
     {
         if (Input.GetMouseButtonDown(0))
         {
             if (firstClick)
             {
                 AssignMine();
                 firstClick = false;
             }
             if (IsMine)
             {
                 Instantiate(gameOverMessageBox);
                 renderer.material.color = Color.red;
                 CurrentMineStatus       = MineStatus.Mine;
                 DisableAllMine();
             }
             else
             {
                 CurrentMineStatus       = MineStatus.Clear;
                 renderer.material.color = Color.blue;
                 mineText.text           = GetNeighborMineNum().ToString();
                 if (GetNeighborMineNum() == 0)
                 {
                     CheckNeighborMine();
                 }
             }
         }
         if (Input.GetMouseButtonDown(1))
         {
             renderer.material.color = Color.yellow;
             CurrentMineStatus       = MineStatus.Flag;
             mineCount--;
             if (mineCount == 0)
             {
                 Instantiate(gameWinMessageBox);
             }
         }
     }
 }
        public void setFlag(int x, int y)
        {
            MineStatus s = data.status[x, y];

            if (s != MineStatus.CLICKED)
            {
                if (s == MineStatus.QUESTION)
                {
                    data.status[x, y] = MineStatus.UNCLICKED;
                }
                else if (s == MineStatus.UNCLICKED)
                {
                    data.status[x, y] = MineStatus.FLAGGED;
                    data.flagCount++;
                }
                else if (s == MineStatus.FLAGGED)
                {
                    data.status[x, y] = MineStatus.QUESTION;
                    data.flagCount--;
                }
            }
            updateSpot(x, y);
        }
Esempio n. 10
0
        public List <ClientData> QueryClients(
            int pageIndex,
            int pageSize,
            Guid?groupId,
            Guid?workId,
            string minerIp,
            string minerName,
            MineStatus mineState,
            string coin,
            string pool,
            string wallet,
            string version,
            string kernel,
            out int total,
            out int miningCount)
        {
            InitOnece();
            IQueryable <ClientData> query = _dicByObjectId.Values.AsQueryable();

            if (groupId != null && groupId.Value != Guid.Empty)
            {
                query = query.Where(a => a.GroupId == groupId.Value);
            }
            if (workId != null && workId.Value != Guid.Empty)
            {
                query = query.Where(a => a.WorkId == workId.Value);
            }
            else
            {
                if (workId != null)
                {
                    query = query.Where(a => a.WorkId == workId.Value);
                }
                if (!string.IsNullOrEmpty(coin))
                {
                    query = query.Where(a => a.MainCoinCode == coin || a.DualCoinCode == coin);
                }
                if (!string.IsNullOrEmpty(pool))
                {
                    query = query.Where(a => a.MainCoinPool == pool || a.DualCoinPool == pool);
                }
                if (!string.IsNullOrEmpty(wallet))
                {
                    query = query.Where(a => a.MainCoinWallet == wallet || a.DualCoinWallet == wallet);
                }
            }
            if (!string.IsNullOrEmpty(minerIp))
            {
                query = query.Where(a => a.MinerIp == minerIp);
            }
            if (!string.IsNullOrEmpty(minerName))
            {
                query = query.Where(a =>
                                    (!string.IsNullOrEmpty(a.MinerName) && a.MinerName.IndexOf(minerName, StringComparison.OrdinalIgnoreCase) != -1) ||
                                    (!string.IsNullOrEmpty(a.ClientName) && a.ClientName.IndexOf(minerName, StringComparison.OrdinalIgnoreCase) != -1));
            }
            if (mineState != MineStatus.All)
            {
                if (mineState == MineStatus.Mining)
                {
                    query = query.Where(a => a.IsMining == true);
                }
                else
                {
                    query = query.Where(a => a.IsMining == false);
                }
            }
            if (!string.IsNullOrEmpty(version))
            {
                query = query.Where(a => a.Version != null && a.Version.StartsWith(version, StringComparison.OrdinalIgnoreCase));
            }
            if (!string.IsNullOrEmpty(kernel))
            {
                query = query.Where(a => a.Kernel != null && a.Kernel.StartsWith(kernel, StringComparison.OrdinalIgnoreCase));
            }
            total       = query.Count();
            miningCount = query.Count(a => a.IsMining);
            var      results = query.OrderBy(a => a.MinerName).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            DateTime time    = DateTime.Now.AddMinutes(-3);

            // 3分钟未上报算力视为0算力
            foreach (var clientData in results)
            {
                if (clientData.ModifiedOn < time)
                {
                    clientData.DualCoinSpeed = 0;
                    clientData.MainCoinSpeed = 0;
                }
            }
            return(results);
        }
Esempio n. 11
0
 //设置块状态
 public void setMineStatus(MineStatus pMineStatus)
 {
     mineStatus = pMineStatus;
 }
Esempio n. 12
0
 public List <ClientData> QueryClients(
     int pageIndex,
     int pageSize,
     Guid?mineWorkId,
     string minerIp,
     string minerName,
     MineStatus mineState,
     string mainCoin,
     string mainCoinPool,
     string mainCoinWallet,
     string dualCoin,
     string dualCoinPool,
     string dualCoinWallet,
     out int total)
 {
     InitOnece();
     lock (_locker) {
         IQueryable <ClientData> query = _dicById.Values.AsQueryable();
         if (mineWorkId != null && mineWorkId.Value != Guid.Empty)
         {
             query = query.Where(a => a.WorkId == mineWorkId.Value);
         }
         else
         {
             if (mineWorkId != null)
             {
                 query = query.Where(a => a.WorkId == mineWorkId.Value);
             }
             if (!string.IsNullOrEmpty(mainCoin))
             {
                 query = query.Where(a => a.MainCoinCode == mainCoin);
             }
             if (!string.IsNullOrEmpty(mainCoinPool))
             {
                 query = query.Where(a => a.MainCoinPool == mainCoinPool);
             }
             if (!string.IsNullOrEmpty(dualCoin))
             {
                 if (dualCoin == "*")
                 {
                     query = query.Where(a => a.IsDualCoinEnabled);
                 }
                 else
                 {
                     query = query.Where(a => a.DualCoinCode == dualCoin);
                 }
             }
             if (!string.IsNullOrEmpty(dualCoinPool))
             {
                 query = query.Where(a => a.DualCoinPool == dualCoinPool);
             }
             if (!string.IsNullOrEmpty(mainCoinWallet))
             {
                 query = query.Where(a => a.MainCoinWallet == mainCoinWallet);
             }
             if (!string.IsNullOrEmpty(dualCoinWallet))
             {
                 query = query.Where(a => a.DualCoinWallet == dualCoinWallet);
             }
         }
         if (!string.IsNullOrEmpty(minerIp))
         {
             query = query.Where(a => a.MinerIp == minerIp);
         }
         if (!string.IsNullOrEmpty(minerName))
         {
             query = query.Where(a => a.MinerName.IndexOf(minerName, StringComparison.OrdinalIgnoreCase) >= 0);
         }
         if (mineState != MineStatus.All)
         {
             if (mineState == MineStatus.Mining)
             {
                 query = query.Where(a => a.IsMining == true);
             }
             else
             {
                 query = query.Where(a => a.IsMining == false);
             }
         }
         total = query.Count();
         return(query.OrderBy(a => a.Id).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList());
     }
 }