private Stratum.Stratum createStratumFromPoolSettings(List <PoolSettingsXml> pPoolSettings, Algorithm pAlgorithm)
 {
     Stratum.Stratum result = null;
     switch (pAlgorithm)
     {
     case Algorithm.CryptoNight:
     default:
         result = new CryptoNightStratum(pPoolSettings);
         break;
     }
     return(result);
 }
 private Stratum.Stratum createStratumFromPoolSettings(List <PoolSettingsXmlUI> pPoolSettings, int pAlgorithm)
 {
     Stratum.Stratum result = null;
     switch (pAlgorithm)
     {
     case (int)SupportedAlgos.CryptoNight:
     default:
         result = new CryptoNightStratum(pPoolSettings);
         break;
     }
     return(result);
 }
        public void Start(CryptoNightStratum pStratum, int pRawIntensity, int pLocalWorkSize, bool pNicehashMode = true)
        {
            //foreach (ProcessThread pt in Process.GetCurrentProcess().Threads)
            //{
            //    int utid = Utils.GetCurrentThreadId();
            //    if (utid == pt.Id)
            //    {
            //        pt.ProcessorAffinity = (IntPtr)Utils.PriorityThread;
            //    }
            //}

            var prevGlobalWorkSize = globalWorkSizeA[0];

            _stratum = pStratum;
            _coin    = Consts.Coins.Where(x => x.CoinType == _stratum.ActiveClient.Pool.CoinType).FirstOrDefault();

            if ((Utils.MigrateAlgorithm(_stratum.ActiveClient.Pool.Algorithm) == (int)Consts.SupportedAlgos.CryptoNight_Heavy) ||
                (_coin.Algorithm == (int)Consts.SupportedAlgos.CryptoNight_Heavy))
            {
                globalWorkSizeA[0] = globalWorkSizeB[0] = Utils.NearestEven(pRawIntensity * pLocalWorkSize / 2);
            }
            else
            {
                globalWorkSizeA[0] = globalWorkSizeB[0] = pRawIntensity * pLocalWorkSize;
            }

            localWorkSizeA[0] = localWorkSizeB[0] = pLocalWorkSize;
            NiceHashMode      = pNicehashMode;

            if (statesBuffer == null)
            {
                statesBuffer = new ComputeBuffer <byte>(Context, ComputeMemoryFlags.ReadWrite, 200 * globalWorkSizeA[0]);
            }

            base.Start();
        }