Line data Source code
1 : // Copyright (c) 2019 Made to Order Software Corp. All Rights Reserved
2 : //
3 : // https://snapwebsites.org/project/snapdatabase
4 : // contact@m2osw.com
5 : //
6 : // This program is free software; you can redistribute it and/or modify
7 : // it under the terms of the GNU General Public License as published by
8 : // the Free Software Foundation; either version 2 of the License, or
9 : // (at your option) any later version.
10 : //
11 : // This program is distributed in the hope that it will be useful,
12 : // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : // GNU General Public License for more details.
15 : //
16 : // You should have received a copy of the GNU General Public License along
17 : // with this program; if not, write to the Free Software Foundation, Inc.,
18 : // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 :
20 :
21 : /** \file
22 : * \brief Database file implementation.
23 : *
24 : * Each table uses one or more files. Each file is handled by a dbfile
25 : * object and a corresponding set of blocks.
26 : */
27 :
28 : // self
29 : //
30 : #include "snapdatabase/block/block_data.h"
31 :
32 : #include "snapdatabase/block/block_header.h"
33 : #include "snapdatabase/database/table.h"
34 :
35 :
36 : // last include
37 : //
38 : #include <snapdev/poison.h>
39 :
40 :
41 :
42 : namespace snapdatabase
43 : {
44 :
45 :
46 :
47 : namespace detail
48 : {
49 : }
50 :
51 :
52 : namespace
53 : {
54 :
55 :
56 : // 'DATA'
57 : constexpr struct_description_t const g_description[] =
58 : {
59 : define_description(
60 : FieldName("header")
61 : , FieldType(struct_type_t::STRUCT_TYPE_STRUCTURE)
62 : , FieldSubDescription(detail::g_block_header)
63 : ),
64 : end_descriptions()
65 : };
66 :
67 :
68 : constexpr descriptions_by_version_t const g_descriptions_by_version[] =
69 : {
70 : define_description_by_version(
71 : DescriptionVersion(0, 1),
72 : DescriptionDescription(g_description)
73 : ),
74 : end_descriptions_by_version()
75 : };
76 :
77 :
78 : }
79 : // no name namespace
80 :
81 :
82 0 : block_data::block_data(dbfile::pointer_t f, reference_t offset)
83 0 : : block(g_descriptions_by_version, f, offset)
84 : {
85 0 : }
86 :
87 :
88 0 : uint32_t block_data::block_total_space(table_pointer_t t)
89 : {
90 0 : return t->get_page_size() - sizeof(uint32_t);
91 : }
92 :
93 :
94 :
95 : } // namespace snapdatabase
96 : // vim: ts=4 sw=4 et
|