X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=Novacoin%2FCBlockStore.cs;h=fb60e2b9e4b07c0fbecb1768ec49019563205f41;hb=886861c2656fd556145c7d46a2002c169dacc2f6;hp=1c70f01f088e621ed909e9858db031e08778382f;hpb=1f2cbf0bc6a47aaf3bb6b315ad3a3ef73b7d90b4;p=NovacoinLibrary.git diff --git a/Novacoin/CBlockStore.cs b/Novacoin/CBlockStore.cs index 1c70f01..fb60e2b 100644 --- a/Novacoin/CBlockStore.cs +++ b/Novacoin/CBlockStore.cs @@ -273,7 +273,7 @@ namespace Novacoin /// Result public bool ReadFromFile(ref Stream reader, out CTransaction tx) { - var buffer = new byte[250000]; // Max transaction size is 250kB + var buffer = new byte[CTransaction.nMaxTxSize]; tx = null; try @@ -369,12 +369,7 @@ namespace Novacoin /// /// Block file stream with read access /// - private Stream reader; - - /// - /// Block file stream with write access - /// - private Stream writer; + private Stream fStreamReadWrite; /// /// Init the block storage manager. @@ -389,9 +384,7 @@ namespace Novacoin bool firstInit = !File.Exists(strDbFile); dbConn = new SQLiteConnection(new SQLitePlatformGeneric(), strDbFile); - var fStreamReadWrite = File.Open(strBlockFile, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); - reader = new BinaryReader(fStreamReadWrite).BaseStream; - writer = new BinaryWriter(fStreamReadWrite).BaseStream; + fStreamReadWrite = File.Open(strBlockFile, FileMode.OpenOrCreate, FileAccess.ReadWrite); if (firstInit) { @@ -431,6 +424,7 @@ namespace Novacoin public bool GetTransaction(Hash256 TxID, ref CTransaction tx) { + var reader = new BinaryReader(fStreamReadWrite).BaseStream; var QueryTx = dbConn.Query("select * from [TransactionStorage] where [TransactionHash] = ?", (byte[])TxID); if (QueryTx.Count == 1) @@ -445,6 +439,7 @@ namespace Novacoin private bool AddItemToIndex(ref CBlockStoreItem itemTemplate, ref CBlock block) { + var writer = new BinaryWriter(fStreamReadWrite).BaseStream; var blockHash = new ScryptHash256(itemTemplate.Hash); if (blockMap.ContainsKey(blockHash)) @@ -527,7 +522,7 @@ namespace Novacoin uint nHeight = prevBlockCursor.nHeight + 1; // Check timestamp against prev - if (NetInfo.FutureDrift(block.header.nTime) < prevBlockHeader.nTime) + if (NetUtils.FutureDrift(block.header.nTime) < prevBlockHeader.nTime) { // block's timestamp is too early return false; @@ -562,6 +557,8 @@ namespace Novacoin public bool GetBlock(ScryptHash256 blockHash, ref CBlock block) { + var reader = new BinaryReader(fStreamReadWrite).BaseStream; + var QueryBlock = dbConn.Query("select * from [BlockStorage] where [Hash] = ?", (byte[])blockHash); if (QueryBlock.Count == 1) @@ -664,7 +661,7 @@ namespace Novacoin var nOffset = 0L; - var buffer = new byte[1000000]; // Max block size is 1Mb + var buffer = new byte[CBlock.nMaxBlockSize]; // Max block size is 1Mb var intBuffer = new byte[4]; var fStream2 = File.OpenRead(BlockFile); @@ -747,8 +744,7 @@ namespace Novacoin { // Free other state (managed objects). - reader.Dispose(); - writer.Dispose(); + fStreamReadWrite.Dispose(); } if (dbConn != null)