Beispiel #1
0
 private static Task HandleBurn(string data)
 {
     try
     {
         dynamic message = JsonConvert.DeserializeObject(data);
         ApplicationStateManager.Burn(message.message.Value);
     }
     catch (Exception e)
     {
         NHLog.Error("NHWebSocket", $"SetBalance error: {e.Message}");
     }
     return(Task.CompletedTask);
 }
        private static void SocketOnOnDataReceived(object sender, MessageEventArgs e)
        {
            try
            {
                if (e.IsText)
                {
                    NiceHashMinerLegacy.Common.Logger.Info("SOCKET", "Received: " + e.Data);
                    dynamic message = JsonConvert.DeserializeObject(e.Data);
                    switch (message.method.Value)
                    {
                    case "sma":
                    {
                        // Try in case stable is not sent, we still get updated paying rates
                        try
                        {
                            var stable = JsonConvert.DeserializeObject(message.stable.Value);
                            SetStableAlgorithms(stable);
                        } catch
                        { }
                        SetAlgorithmRates(message.data);
                        break;
                    }

                    case "markets":
                        HandleMarkets(e.Data);
                        break;

                    case "balance":
                        SetBalance(message.value.Value);
                        break;

                    case "versions":
                        SetVersion(message.legacy.Value);
                        break;

                    case "burn":
                        ApplicationStateManager.Burn(message.message.Value);
                        break;

                    case "exchange_rates":
                        SetExchangeRates(message.data.Value);
                        break;
                    }
                }
            } catch (Exception er)
            {
                NiceHashMinerLegacy.Common.Logger.Error("SOCKET", er.ToString());
            }
        }
Beispiel #3
0
        internal static ExecutedInfo ProcessData(string data, out bool executed, out int?id)
        {
            NHM.Common.Logger.Info("SOCKET", $"Received: {data}");
            dynamic message = JsonConvert.DeserializeObject(data);

            executed = false;

            if (message == null)
            {
                throw new RpcException("No message found", ErrorCode.UnableToHandleRpc);
            }

            id = (int?)message.id;
            switch (message.method.Value)
            {
            case "sma":
            {
                // Try in case stable is not sent, we still get updated paying rates
                try
                {
                    var stable = JsonConvert.DeserializeObject(message.stable.Value);
                    SetStableAlgorithms(stable);
                }
                catch
                { }
                SetAlgorithmRates(message.data);
                return(null);
            }

            case "markets":
                HandleMarkets(data);
                return(null);

            case "balance":
                SetBalance(message.value.Value);
                return(null);

            case "versions":
                SetVersion(message.v3.Value);
                return(null);

            case "burn":
                ApplicationStateManager.Burn(message.message.Value);
                return(null);

            case "exchange_rates":
                SetExchangeRates(message.data.Value);
                return(null);

            //case "essentials":
            //    var ess = JsonConvert.DeserializeObject<EssentialsCall>(data);
            //    ProcessEssentials(ess);
            //    return null;
            case "mining.set.username":
                executed = true;
                throwIfWeCannotHanldeRPC();
                var btc = (string)message.username;
                return(miningSetUsername(btc));

            case "mining.set.worker":
                executed = true;
                throwIfWeCannotHanldeRPC();
                var worker = (string)message.worker;
                return(miningSetWorker(worker));

            case "mining.set.group":
                executed = true;
                throwIfWeCannotHanldeRPC();
                var group = (string)message.group;
                return(miningSetGroup(group));

            case "mining.enable":
                executed = true;
                throwIfWeCannotHanldeRPC();
                SetDevicesEnabled((string)message.device, true);
                return(null);

            case "mining.disable":
                executed = true;
                throwIfWeCannotHanldeRPC();
                SetDevicesEnabled((string)message.device, false);
                return(null);

            case "mining.start":
                executed = true;
                throwIfWeCannotHanldeRPC();
                StartMining((string)message.device);
                return(null);

            case "mining.stop":
                executed = true;
                throwIfWeCannotHanldeRPC();
                StopMining((string)message.device);
                return(null);

            case "mining.set.power_mode":
                executed = true;
                throwIfWeCannotHanldeRPC();
                SetPowerMode((string)message.device, (TDPSimpleType)message.power_mode);
                return(null);
            }

            throw new RpcException("Operation not supported", ErrorCode.UnableToHandleRpc);
        }