public RocksDbProvider(string basePath, IDbConfig dbConfig, ILogManager logManager, bool useTraceDb, bool useReceiptsDb) { BlocksDb = new BlocksRocksDb(basePath, dbConfig, logManager); HeadersDb = new HeadersRocksDb(basePath, dbConfig, logManager); BlockInfosDb = new BlockInfosRocksDb(basePath, dbConfig, logManager); StateDb = new StateDb(new StateRocksDb(basePath, dbConfig, logManager)); CodeDb = new StateDb(new CodeRocksDb(basePath, dbConfig, logManager)); PendingTxsDb = new PendingTxsRocksDb(basePath, dbConfig, logManager); ConfigsDb = new ConfigsRocksDb(basePath, dbConfig, logManager); EthRequestsDb = new EthRequestsRocksDb(basePath, dbConfig, logManager); if (useReceiptsDb) { ReceiptsDb = new ReceiptsRocksDb(basePath, dbConfig, logManager); } else { ReceiptsDb = new ReadOnlyDb(new MemDb(), false); } if (useTraceDb) { TraceDb = new TraceRocksDb(basePath, dbConfig, logManager); } else { TraceDb = new ReadOnlyDb(new MemDb(), false); } }
public void Smoke_test() { IDbConfig config = new DbConfig(); DbOnTheRocks db = new BlocksRocksDb("blocks", config); db[new byte[] { 1, 2, 3 }] = new byte[] { 4, 5, 6 }; Assert.AreEqual(new byte[] { 4, 5, 6 }, db[new byte[] { 1, 2, 3 }]); }
public void Can_get_all_on_empty() { IDbConfig config = new DbConfig(); DbOnTheRocks db = new BlocksRocksDb("testIterator", config); try { db.GetAll().ToList(); } finally { db.Clear(); db.Dispose(); } }
public void Init(string path) { var dbOnTheRocks = new BlocksRocksDb(path, new DbConfig(), LimboLogs.Instance); var blocksBytes = dbOnTheRocks.GetAll(); var blockDecoder = new BlockDecoder(); var blocks = blocksBytes .Select(b => blockDecoder.Decode(b.Value.AsRlpStream())) .OrderBy(b => b.Number) .ToList(); var window = new Window("Blocks") { X = 0, Y = 10, Width = Dim.Fill(), Height = Dim.Fill() }; if (!blocks.Any()) { MessageBox.Query(40, 7, "Info", "No data."); window.FocusPrev(); return; } var y = 1; foreach (var block in blocks) { var blockBtn = new Button(1, y++, $"Number: {block.Number}, Hash: {block.Hash}"); blockBtn.Clicked = () => { var blockDetailsWindow = new Window("Block details") { X = 0, Y = 10, Width = Dim.Fill(), Height = Dim.Fill() }; Application.Top.Add(blockDetailsWindow); var serializer = new EthereumJsonSerializer(); var blockLbl = new Label(1, 1, serializer.Serialize(block, true)); blockDetailsWindow.Add(blockLbl); Application.Run(blockDetailsWindow); }; window.Add(blockBtn); } Application.Top.Add(window); Application.Run(window); }
public async Task Dispose_while_writing_does_not_cause_access_violation_exception() { IDbConfig config = new DbConfig(); DbOnTheRocks db = new BlocksRocksDb("testDispose1", config); Task task = new Task(() => { while (true) { db.Set(Keccak.Zero, new byte[] { 1, 2, 3 }); } }); task.Start(); await Task.Delay(100); db.Dispose(); await Task.Delay(100); task.Dispose(); }