コード例 #1
0
        internal IEnumerable <MempoolPersistenceEntry> LoadFromStream(Stream stream)
        {
            var toReturn = new List <MempoolPersistenceEntry>();

            ulong version       = 0;
            long  numEntries    = -1;
            var   bitcoinReader = new BitcoinStream(stream, false);

            bool exitWithError = false;

            try
            {
                bitcoinReader.ReadWrite(ref version);
                if (version != MEMPOOL_DUMP_VERSION)
                {
                    Logs.Mempool.LogWarning($"Memorypool data is wrong version ({version}) aborting...");
                    return(null);
                }
                bitcoinReader.ReadWrite(ref numEntries);
            }
            catch
            {
                Logs.Mempool.LogWarning($"Memorypool data is corrupt at header, aborting...");
                return(null);
            }

            for (int i = 0; i < numEntries && !exitWithError; i++)
            {
                MempoolPersistenceEntry entry = default(MempoolPersistenceEntry);
                try
                {
                    bitcoinReader.ReadWrite(ref entry);
                }
                catch
                {
                    Logs.Mempool.LogWarning($"Memorypool data is corrupt at item {i + 1}, aborting...");
                    return(null);
                }

                toReturn.Add(entry);
            }


            return(toReturn);
        }
コード例 #2
0
        public MemPoolSaveResult Save(TxMempool memPool, string fileName = null)
        {
            fileName = fileName ?? defaultFilename;
            IEnumerable <MempoolPersistenceEntry> toSave = memPool.MapTx.Values.ToArray().Select(tx => MempoolPersistenceEntry.FromTxMempoolEntry(tx));

            return(Save(toSave, fileName));
        }