public void DbProvider_ThrowExceptionOnGettingNotRegisteredDb() { using (DbProvider dbProvider = new DbProvider(DbModeHint.Mem)) { MemDbFactory memDbFactory = new MemDbFactory(); IColumnsDb <ReceiptsColumns> memSnapshotableDb = memDbFactory.CreateColumnsDb <ReceiptsColumns>("ColumnsDb"); dbProvider.RegisterDb("ColumnsDb", memSnapshotableDb); Assert.Throws <ArgumentException>(() => dbProvider.GetDb <IColumnsDb <ReceiptsColumns> >("differentdb")); } }
public void DbProvider_ThrowExceptionOnRegisteringTheSameDb() { using (DbProvider dbProvider = new DbProvider(DbModeHint.Mem)) { MemDbFactory memDbFactory = new MemDbFactory(); IColumnsDb <ReceiptsColumns> memSnapshotableDb = memDbFactory.CreateColumnsDb <ReceiptsColumns>("ColumnsDb"); dbProvider.RegisterDb("ColumnsDb", memSnapshotableDb); Assert.Throws <ArgumentException>(() => dbProvider.RegisterDb("columnsdb", new MemDb())); } }
public void DbProvider_CanRegisterColumnsDb() { using (DbProvider dbProvider = new DbProvider(DbModeHint.Mem)) { MemDbFactory memDbFactory = new MemDbFactory(); IColumnsDb <ReceiptsColumns> memSnapshotableDb = memDbFactory.CreateColumnsDb <ReceiptsColumns>("ColumnsDb"); dbProvider.RegisterDb("ColumnsDb", memSnapshotableDb); IColumnsDb <ReceiptsColumns> columnsDb = dbProvider.GetDb <IColumnsDb <ReceiptsColumns> >("ColumnsDb"); Assert.AreEqual(memSnapshotableDb, columnsDb); Assert.IsTrue(memSnapshotableDb is IColumnsDb <ReceiptsColumns>); } }
public PersistentReceiptStorage(IColumnsDb <ReceiptsColumns> receiptsDb, ISpecProvider specProvider, IReceiptsRecovery receiptsRecovery) { long Get(Keccak key, long defaultValue) => _database.Get(key)?.ToLongFromBigEndianByteArrayWithoutLeadingZeros() ?? defaultValue; _database = receiptsDb ?? throw new ArgumentNullException(nameof(receiptsDb)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _receiptsRecovery = receiptsRecovery ?? throw new ArgumentNullException(nameof(receiptsRecovery)); _blocksDb = _database.GetColumnDb(ReceiptsColumns.Blocks); _transactionDb = _database.GetColumnDb(ReceiptsColumns.Transactions); byte[] lowestBytes = _database.Get(Keccak.Zero); _lowestInsertedReceiptBlock = lowestBytes == null ? (long?)null : new RlpStream(lowestBytes).DecodeLong(); _migratedBlockNumber = Get(MigrationBlockNumberKey, long.MaxValue); }
public ReadOnlyColumnsDb(IColumnsDb <T> wrappedDb, bool createInMemWriteStore) : base(wrappedDb, createInMemWriteStore) { _wrappedDb = wrappedDb; _createInMemWriteStore = createInMemWriteStore; }