def read_checkpoint(c)
{
:number => c.name("number") { c.get_uint64 },
:lsn => c.name("lsn") { c.get_uint64 },
:lsn_offset => c.name("lsn_offset") { c.get_uint32 },
:buffer_size => c.name("buffer_size") { c.get_uint32 },
:archived_lsn => c.name("archived_lsn") { c.get_uint64 },
:group_array =>
(0 .. LOG_CHECKPOINT_GROUPS - 1).map do |n|
c.name("group_array[#{n}]") do
{
:archived_file_no => c.name("archived_file_no") { c.get_uint32 },
:archived_offset => c.name("archived_offset") { c.get_uint32 },
}
end
end,
:checksum_1 => c.name("checksum_1") { c.get_uint32 },
:checksum_2 => c.name("checksum_2") { c.get_uint32 },
:fsp_free_limit => c.name("fsp_free_limit") { c.get_uint32 },
:fsp_magic => c.name("fsp_magic") { c.get_uint32 },
}
end