File : blocks.adb


   1 pragma Restrictions (No_Implicit_Heap_Allocations);
   2 
   3 with VarInts; use VarInts;
   4 with Dump; use Dump;
   5 
   6 with ada.text_io;
   7 use  ada.text_io;
   8 with Ada.Streams.Stream_IO; use Ada.Streams.Stream_IO;
   9 
  10 with Transactions;
  11 use Transactions.Traditional;
  12 with Dump; use Dump;
  13 
  14 
  15 package body Blocks is
  16    
  17    
  18    procedure Block_Read(Stream : not null access Root_Stream_Type'Class;
  19                         B      : out Block) is
  20 
  21       T : Tx;
  22       My_File        : Ada.Streams.Stream_IO.FILE_TYPE;
  23       My_File_Access : Ada.Streams.Stream_IO.STREAM_ACCESS;
  24    begin
  25       Ada.Streams.Stream_IO.Create(My_File, Out_File, "out");
  26       My_File_Access := Ada.Streams.Stream_IO.Stream(My_File);
  27       
  28       
  29       -- Read block header
  30       BlockHeader'Read(Stream, B.Header);
  31       ----
  32       BlockHeader'Write(My_File_Access, B.Header);
  33       ----
  34       -- Read count of transactions
  35       VarInt'Read(Stream, VarInt(B.Tx_N));
  36       ----
  37       VarInt'Write(My_File_Access, VarInt(B.Tx_N));
  38       ----
  39       
  40       -- Read transactions
  41       for I in 1 .. B.Tx_N loop
  42          
  43          Put_Line("Txn # " & I'Image);
  44          TradTx_Read(Stream, T);
  45          
  46          Put_Line("Hash:");
  47          HexDumpRev(Stream_Element_Array(T.Hash));
  48          Put_Line("Mass == " & T.NBytes'Image);
  49          
  50          TradTx_Write(My_File_Access, T);
  51          
  52       end loop;
  53       
  54       Put_Line("Read txn:  " & B.Tx_N'Image);
  55    end;
  56    
  57    
  58    procedure Block_Write(Stream : not null access Root_Stream_Type'Class;
  59                          B      : in Block) is
  60    begin
  61       -- Write block header
  62       BlockHeader'Write(Stream, B.Header);
  63       -- Write count of transactions
  64       VarInt'Write(Stream, VarInt(B.Tx_N));
  65       -- Write transactions
  66       
  67       -- .......
  68       
  69    end;
  70    
  71 end Blocks;