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
00032
00033
00034
00035 #if !defined( _OESS_1__DB__STORAGE__DIRTY_PAGE_STORAGE_HPP_ )
00036 #define _OESS_1__DB__STORAGE__DIRTY_PAGE_STORAGE_HPP_
00037
00038 #include <memory>
00039
00040 #include <cpp_util_2/h/nocopy.hpp>
00041
00042 #include <oess_1/db/h/declspec.hpp>
00043
00044 #include <oess_1/defs/h/types.hpp>
00045
00046 #include <oess_1/db/storage/h/loaded_page.hpp>
00047
00048 namespace oess_1 {
00049
00050 namespace db {
00051
00052 namespace storage {
00053
00054
00055
00056
00057
00063 class OESS_1__DB__TYPE dirty_page_actor_t
00064 : private cpp_util_2::nocopy_t
00065 {
00066 public :
00067 virtual ~dirty_page_actor_t();
00068
00070 virtual void
00071 operator()(
00073 oess_1::uint_t page_ordinal,
00075 const oess_1::char_t * page,
00081 const oess_1::char_t * source_value,
00083 oess_1::uint_t page_size ) = 0;
00084 };
00085
00086
00087
00088
00089
00095 class OESS_1__DB__TYPE dirty_page_storage_t
00096 : private cpp_util_2::nocopy_t
00097 {
00098 public :
00099 virtual ~dirty_page_storage_t();
00100
00102
00105 virtual void
00106 put(
00107 const ref_loaded_page_t & page ) = 0;
00108
00110
00120 virtual bool
00121 find(
00123 oess_1::uint_t page_ordinal,
00125 ref_loaded_page_t & receiver ) const = 0;
00126
00128
00134 virtual void
00135 for_each( dirty_page_actor_t & actor ) const = 0;
00136
00138
00141 virtual void
00142 clear() = 0;
00143
00145
00152 virtual oess_1::uint_t
00153 size() const = 0;
00154 };
00155
00156
00157
00158
00159
00166 std::auto_ptr< dirty_page_storage_t >
00167 create_std_dirty_page_storage();
00168
00169 }
00170
00171 }
00172
00173 }
00174
00175 #endif
00176