00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00037 #if !defined( _OESS_1__DB__STORAGE__IMPL__CACHE_HPP_ )
00038 #define _OESS_1__DB__STORAGE__IMPL__CACHE_HPP_
00039
00040 #include <memory>
00041
00042 #include <cpp_util_2/h/nocopy.hpp>
00043
00044 #include <oess_1/db/storage/h/loaded_page.hpp>
00045 #include <oess_1/db/storage/h/dirty_page_storage.hpp>
00046
00047 namespace oess_1 {
00048
00049 namespace db {
00050
00051 namespace storage {
00052
00053 namespace impl {
00054
00059 class cache_t
00060 : private cpp_util_2::nocopy_t
00061 {
00062 public :
00063 virtual ~cache_t();
00064
00068 virtual void
00069 reinit(
00072 oess_1::uint_t cache_size,
00074 oess_1::uint_t page_size ) = 0;
00075
00083 virtual void
00084 cleanup() = 0;
00085
00091 virtual const oess_1::char_t *
00092 read_access(
00094 oess_1::uint_t ordinal ) = 0;
00095
00103 virtual oess_1::char_t *
00104 write_access(
00106 oess_1::uint_t ordinal ) = 0;
00107
00118 virtual oess_1::char_t *
00119 push(
00121 const ref_loaded_page_t & page,
00123 dirty_page_storage_t & storage,
00126 bool is_read_only_access ) = 0;
00127
00138 virtual void
00139 copy_all_dirties(
00140 dirty_page_storage_t & storage ) = 0;
00141
00150 virtual void
00151 clear_all_dirties() = 0;
00152
00159 virtual void
00160 throw_away_all_dirties() = 0;
00161 };
00162
00168 std::auto_ptr< cache_t >
00169 create_std_cache();
00170
00171 }
00172
00173 }
00174
00175 }
00176
00177 }
00178
00179 #endif
00180