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__CLN__IMPL__STD_DB_HPP_ )
00038 #define _OESS_1__DB__CLN__IMPL__STD_DB_HPP_
00039
00040 #include <auto_ptr_3/h/obj_ptr.hpp>
00041
00042 #include <oess_1/db/cln/h/db.hpp>
00043
00044 namespace oess_1 {
00045
00046 namespace db {
00047
00048 namespace cln {
00049
00050 namespace impl {
00051
00052 class ent_packer_base_t;
00053 class ent_unpacker_base_t;
00054
00055
00056
00057
00058
00062 class std_db_t :
00063 public db_t
00064 {
00065 public :
00067 std_db_t(
00069 oess_1::db::site::abstract_connector_t * connector );
00070 virtual ~std_db_t();
00071
00074 virtual void
00075 attach(
00076 const std::string & logic_name );
00077
00078 virtual void
00079 detach();
00080
00081 virtual void
00082 slice_create(
00083 const std::string & name );
00084
00085 virtual void
00086 slice_destroy(
00087 const std::string & name );
00088
00089 virtual bool
00090 slice_is_exists(
00091 const std::string & name );
00092
00093 virtual std::set< std::string >
00094 slice_names();
00095
00096 virtual oess_1::ent_id_t
00097 ent_create(
00098 const std::string & slice_name,
00099 const oess_1::stdsn::serializable_t & ent );
00100
00101 virtual void
00102 ent_destroy(
00103 const oess_1::ent_id_t & ent_id );
00104
00105 virtual void
00106 ent_destroy_all(
00107 const std::string & slice_name );
00108
00109 virtual void
00110 ent_load(
00111 const oess_1::ent_id_t & ent_id,
00112 oess_1::stdsn::serializable_t & ent );
00113
00114 virtual void
00115 ent_update(
00116 const oess_1::ent_id_t & ent_id,
00117 const oess_1::stdsn::serializable_t & ent );
00118
00119 virtual oess_1::ent_id_t
00120 ent_find_next(
00121 const std::string & slice_name,
00122 const oess_1::ent_id_t & ent_id );
00123
00124 virtual oess_1::ent_id_t
00125 ent_raw_create(
00126 const std::string & slice_name,
00127 oess_1::io::ibinstream_t & image,
00128 oess_1::uint_t image_size );
00129
00130 virtual oess_1::uint_t
00131 ent_raw_load(
00132 const oess_1::ent_id_t & ent_id,
00133 oess_1::io::obinstream_t & to,
00134 oess_1::uint_t length_limit );
00135
00136 virtual void
00137 ent_raw_update(
00138 const oess_1::ent_id_t & ent_id,
00139 oess_1::io::ibinstream_t & image,
00140 oess_1::uint_t image_size );
00143 protected :
00146 virtual void
00147 transaction_begin();
00148
00149 virtual void
00150 transaction_commit();
00151
00152 virtual void
00153 transaction_rollback();
00156 private :
00159 bool m_is_attached;
00160
00162
00163 std::string m_logic_name;
00164
00166 void
00167 cleanup();
00168
00170 void
00171 must_be_attached() const;
00172
00174
00187 oess_1::ent_id_t
00188 do_ent_create_actions(
00190 const std::string & slice_name,
00192 const ent_packer_base_t & packer );
00193
00195
00206 void
00207 do_ent_load_actions(
00209 const oess_1::ent_id_t & ent,
00211 ent_unpacker_base_t & packer );
00212
00214
00225 void
00226 do_ent_update_actions(
00228 const oess_1::ent_id_t & ent,
00230 const ent_packer_base_t & packer );
00231
00233
00235 void
00236 transmit(
00238 oess_1::db::site::impl::request_t * req,
00239 oess_1::db::site::impl::resp_wrapper_t & resp_wrapper,
00240 oess_1::uint_t awaiting_resp_id );
00241 };
00242
00243 }
00244
00245 }
00246
00247 }
00248
00249 }
00250
00251 #endif