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); }
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)); }