public void PushLastSaveToFile()
    {
        if (m_minerObserved == null)
        {
            return;
        }
        if (m_minerObserved.m_minerInfo == null)
        {
            return;
        }
        if (m_minerObserved.m_minerInfo.HasError() || !m_minerObserved.m_minerInfo.HasText())
        {
            return;
        }
        if (!m_minerObserved.m_minerInfo.isConverted)
        {
            return;
        }
        EtherMinerOrgMinerInfo miner = m_minerObserved.m_minerInfo.GetMinerInfo();

        AbstractMinerInfo minerinfo = new AbstractMinerInfo();

        minerinfo.m_address            = miner.GetWallet().GetAddress();
        minerinfo.m_timestampInSeconds = miner.GetFrameStatistic().GetTimestamp();
        minerinfo.m_averageHashrate    = miner.GetFrameStatistic().GetAverageHashRate();
        minerinfo.m_hardwareHashrate   = miner.GetFrameStatistic().GetReportedHashRate();
        minerinfo.m_serverHashrate     = miner.GetFrameStatistic().GetCurrentHashRate();
        minerinfo.m_validShares        = miner.GetFrameStatistic().GetValideShares();
        minerinfo.m_invalidShares      = miner.GetFrameStatistic().GetInvalideShares();
        minerinfo.m_staleShares        = miner.GetFrameStatistic().GetStaleShares();

        minerinfo.m_unpaidWei        = miner.GetUnpaidWai();
        minerinfo.m_bitcoinPerMinute = miner.GetBitcoinPerMinute();
        minerinfo.m_coinsPerMinute   = miner.GetCoinsPerMinutes();
        minerinfo.m_usdPerMinute     = miner.GetUsdPerMinutes();
        minerinfo.m_workerCount      = miner.GetActiveWorkers();


        m_poolSaveAndLoad.SaveMinerState(PoolManageByThisAPI.Ethermine, minerinfo);
        // AbstractMinerBasicInfo[] m_debugMinerKeys;
        //m_poolSaveAndLoad.ImportAllKeys(PoolManageByThisAPI.Ethermine.ToString(), miner.GetWallet().GetAddress(), new DateTime((int)year, (int)month, (int)day, (int)hour, (int)minute, 0, 0, DateTimeKind.Utc), DateTime.UtcNow, out m_debugMinerKeys);
    }
    public void SaveMinerState(string poolName, AbstractMinerInfo minerinfo)
    {
        DateTime d = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc)
                     .AddSeconds(
            Convert.ToDouble(minerinfo.m_timestampInSeconds)
            );
        string fileNameMiner    = string.Format("{0:0000}_{1:00}_{2:00}_{3:00}_{4:00}_{5}_{6:0}_{7}_{8}.minerkey", d.Year, d.Month, d.Day, d.Hour, d.Minute, minerinfo.m_validShares, minerinfo.m_averageHashrate, minerinfo.m_workerCount, minerinfo.m_unpaidWei);
        string fileNameMetaInfo = string.Format("{0:0000}_{1:00}_{2:00}_{3:00}_{4:00}_{5:0}_{6:0}_{7:0}.markertstatekey", d.Year, d.Month, d.Day, d.Hour, d.Minute, minerinfo.m_usdPerMinute * m_costDoubleMultiplicator, minerinfo.m_coinsPerMinute * m_costDoubleMultiplicator, minerinfo.m_bitcoinPerMinute * m_costDoubleMultiplicator);
        string text             = string.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}|{11}|{12}",
                                                minerinfo.m_address,
                                                minerinfo.m_timestampInSeconds,
                                                minerinfo.m_hardwareHashrate,
                                                minerinfo.m_serverHashrate,
                                                minerinfo.m_averageHashrate,
                                                minerinfo.m_validShares,
                                                minerinfo.m_invalidShares,
                                                minerinfo.m_staleShares,
                                                minerinfo.m_workerCount,
                                                minerinfo.m_unpaidWei,
                                                minerinfo.m_coinsPerMinute,
                                                minerinfo.m_usdPerMinute,
                                                minerinfo.m_bitcoinPerMinute

                                                );

        string address        = CheckThatAddressStartWith0X(minerinfo.m_address);
        string root           = GetRootPath() + "/" + poolName + "/" + minerinfo.m_address + "/miner/";
        string pathFolder     = root;
        string pathFileMiner  = root + fileNameMiner;
        string pathFileMarket = root + fileNameMetaInfo;

        if (!Directory.Exists(pathFolder))
        {
            Directory.CreateDirectory(pathFolder);
        }
        File.WriteAllText(pathFileMiner, text);
        File.WriteAllText(pathFileMarket, " '| (- O -) |' ");
    }
 public void SaveMinerState(PoolManageByThisAPI poolName, AbstractMinerInfo minerinfo)
 {
     SaveMinerState(poolName.ToString(), minerinfo);
 }