BCNet.Block.Load C# (CSharp) Method

Load() public method

public Load ( BinaryReader br ) : void
br System.IO.BinaryReader
return void
        public void Load(BinaryReader br)
        {
            mHeader = new BlockHeader();
            mHeader.Load(br);

            int transactionCount = br.ReadInt32();
            for (int i = 0; i < transactionCount; i++)
            {
                Transaction t = new Transaction();
                t.Load(br);
                mTransactions.Add(t);
            }
        }

Usage Example

        void LoadBlocks()
        {
            mBlocks.Clear();
            mCurrentHeight = 1;
            mArchiveMarker = 0;

            while (true)
            {
                string filename = String.Format("/{0:D5}.blocks", mArchiveMarker / 10000);
                string filepath = mDataPath + filename;
                if (!File.Exists(filepath))
                {
                    // File doesnt exist, likely didnt hit a partial block so load the last archive chunk
                    if (mArchiveMarker > 0 && mBlocks.Count == 0)
                    {
                        filename = String.Format("/{0:D5}.blocks", (mArchiveMarker - 10000) / 10000);
                        filepath = mDataPath + filename;
                        try
                        {
                            FileStream   fs = File.OpenRead(filepath);
                            BinaryReader br = new BinaryReader(fs);

                            int version    = br.ReadInt32();
                            int blockCount = br.ReadInt32();
                            mCurrentHeight -= 10000;
                            for (int i = 0; i < blockCount; i++)
                            {
                                Block b = new Block();
                                b.Load(br);
                                b.mHeight = mCurrentHeight++;
                                mBlocks.Add(b);
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                    break;
                }

                try
                {
                    FileStream   fs = File.OpenRead(filepath);
                    BinaryReader br = new BinaryReader(fs);

                    int version    = br.ReadInt32();
                    int blockCount = br.ReadInt32();
                    if (blockCount == 10000 || (blockCount == 9999 && mArchiveMarker == 0))
                    {
                        // This is a fully archived chunk, just skip past it
                        mCurrentHeight += 10000;
                        mArchiveMarker += 10000;
                    }
                    else
                    {
                        // Load all the blocks in this chunk
                        for (int i = 0; i < blockCount; i++)
                        {
                            Block b = new Block();
                            b.Load(br);
                            b.mHeight = mCurrentHeight++;
                            mBlocks.Add(b);
                        }

                        // Break out of the larger loop since this is an incomplete chunk it must be the last one.
                        break;
                    }


                    br.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    break;
                }
            }
        }
All Usage Examples Of BCNet.Block::Load