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
00036 #if !defined( _OESS_1__DB__STORAGE__ENTITY_STREAM_HPP_ )
00037 #define _OESS_1__DB__STORAGE__ENTITY_STREAM_HPP_
00038
00039 #include <cpp_util_2/h/nocopy.hpp>
00040
00041 #include <smart_ref_3/h/smart_ref.hpp>
00042
00043 #include <oess_1/db/h/declspec.hpp>
00044
00045 #include <oess_1/defs/h/types.hpp>
00046
00047 #include <oess_1/io/h/stream.hpp>
00048
00049 #include <oess_1/db/storage/h/chain_storage.hpp>
00050
00051 namespace oess_1 {
00052
00053 namespace db {
00054
00055 namespace storage {
00056
00058 const oess_1::uint_t c_invalid_ent_id = 0;
00059
00060
00061
00062
00063
00070 class OESS_1__DB__TYPE entity_stream_t
00071 : private cpp_util_2::nocopy_t
00072 {
00073 public :
00074 virtual ~entity_stream_t();
00075
00077 virtual oess_1::uint_t
00078 id() const = 0;
00079
00081
00087 virtual chain_id_t
00088 entity_create(
00090 oess_1::io::istream_t & ent_value,
00092 oess_1::uint_t ent_size ) = 0;
00093
00096
00099 virtual void
00100 entity_load(
00102 const chain_id_t & ent_id,
00104 oess_1::io::ostream_t & ent_value ) const = 0;
00105
00108
00116 virtual void
00117 entity_update(
00119 const chain_id_t & ent_id,
00121 oess_1::io::istream_t & ent_value,
00123 oess_1::uint_t ent_size ) = 0;
00124
00126 virtual void
00127 entity_destroy(
00129 const chain_id_t & ent_id ) = 0;
00130
00132
00135 virtual void
00136 entity_destroy_all() = 0;
00137
00139
00148 virtual chain_id_t
00149 entity_find_next(
00150 const chain_id_t & ent_id ) const = 0;
00151
00152 };
00153
00154
00155
00156
00157
00158 SMART_REF_3_DECL_REF( entity_stream_t, class OESS_1__DB__TYPE )
00159
00160
00161
00162
00163
00164
00171 OESS_1__DB__FUNC(entity_stream_t *)
00172 create_std_entity_stream(
00174 chain_storage_t & storage,
00176 oess_1::uint_t id,
00178 const chain_id_t & description_chain );
00179
00180
00181
00182
00183
00188 OESS_1__DB__FUNC(chain_id_t)
00189 create_entity_stream_description(
00191 chain_storage_t & storage );
00192
00193
00194
00195
00196
00202 OESS_1__DB__FUNC(void)
00203 destroy_entity_stream_description(
00205 chain_storage_t & storage,
00207 const chain_id_t & description_chain );
00208
00209 }
00210
00211 }
00212
00213 }
00214
00215 #endif