X-Git-Url: https://git.teslayout.com/public/public/public/?p=anna.git;a=blobdiff_plain;f=include%2Fanna%2Fdbos%2FStorageArea.hpp;fp=include%2Fanna%2Fdbos%2FStorageArea.hpp;h=9523df212c1635ef01dfab563f4dba733f08f8c3;hp=e9bda0301f7939d88a732d1ba515d7a9fdda6ff2;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hpb=af9c86ffb0e28d35ad94d99c5f77e41578c972b4 diff --git a/include/anna/dbos/StorageArea.hpp b/include/anna/dbos/StorageArea.hpp index e9bda03..9523df2 100644 --- a/include/anna/dbos/StorageArea.hpp +++ b/include/anna/dbos/StorageArea.hpp @@ -93,7 +93,7 @@ public: \param v Codigo a traducir a literal. \return el literal correspondiente al codigo recibido. */ - static const char* asString(const _v v) throw(); + static const char* asString(const _v v) ; }; /** @@ -145,13 +145,13 @@ public: * Devuelve el código de error asociado a la excepción cuando no se encuentra un registro buscado. * \return el código de error asociado a la excepción cuando no se encuentra un registro buscado. */ - int getErrorCode() const throw() { return a_errorCode; } + int getErrorCode() const { return a_errorCode; } /* * Devuelve el nombre de la este área de almacenamiento. * \return el nombre de la este área de almacenamiento. */ - const std::string& getName() const throw() { return a_name; } + const std::string& getName() const { return a_name; } /** Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a @@ -173,7 +173,7 @@ public: \warning Cada llamada a este método deberia tener su correspondiente liberacion invocando a #release cuando dejemos de usar la instancia. */ - Object* instance(dbms::Connection& connection, Loader& loader) throw(RuntimeException, dbms::DatabaseException) { + Object* instance(dbms::Connection& connection, Loader& loader) noexcept(false) { return instance(&connection, loader); } @@ -197,7 +197,7 @@ public: \warning Cada llamada a este método deberia tener su correspondiente liberacion invocando a #release cuando dejemos de usar la instancia. */ - Object* instance(dbms::Connection* connection, Loader& loader) throw(RuntimeException, dbms::DatabaseException); + Object* instance(dbms::Connection* connection, Loader& loader) noexcept(false); /** Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a @@ -222,7 +222,7 @@ public: cuando dejemos de usar la instancia. */ Object* instance(dbms::Connection& connection, CrossedLoader& crossedLoader, Loader& loader) - throw(RuntimeException, dbms::DatabaseException) { + noexcept(false) { return instance(&connection, crossedLoader, loader); } @@ -249,7 +249,7 @@ public: cuando dejemos de usar la instancia. */ Object* instance(dbms::Connection* connection, CrossedLoader& crossedLoader, Loader& loader) - throw(RuntimeException, dbms::DatabaseException); + noexcept(false); /** Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a @@ -270,7 +270,7 @@ public: \warning Para usar este método se requiere haber re-escrito el método virtual Loader::load para que no intente obtener los datos desde la base de datos. */ - Object* instance(Loader& loader) throw(RuntimeException, dbms::DatabaseException) { + Object* instance(Loader& loader) noexcept(false) { return instance(NULL, loader); } @@ -292,7 +292,7 @@ public: cuando dejemos de usar la instancia. \li No puede usarse en las áreas de almacenamiento definidas como AccessMode::ReadOnly. */ - Object* create(dbms::Connection& connection, Creator& creator) throw(RuntimeException, dbms::DatabaseException) { + Object* create(dbms::Connection& connection, Creator& creator) noexcept(false) { return create(&connection, creator); } @@ -314,7 +314,7 @@ public: cuando dejemos de usar la instancia. \li No puede usarse en las áreas de almacenamiento definidas como AccessMode::ReadOnly. */ - Object* create(dbms::Connection* connection, Creator& creator) throw(RuntimeException, dbms::DatabaseException); + Object* create(dbms::Connection* connection, Creator& creator) noexcept(false); /** Crea un objeto en el área de almacenamiento y lo prepara para ser transferido al medio fisico @@ -331,7 +331,7 @@ public: cuando dejemos de usar la instancia. \li No puede usarse en las áreas de almacenamiento definidas como AccessMode::ReadOnly. */ - Object* create(Creator& creator) throw(RuntimeException, dbms::DatabaseException) { return create(NULL, creator); } + Object* create(Creator& creator) noexcept(false) { return create(NULL, creator); } /** Devuelve la informacion de un objeto cargado desde el medio fisico. @@ -349,7 +349,7 @@ public: \warning Cada llamada a este método deberia tener su correspondiente liberacion invocando a #release cuando dejemos de usar la instancia. */ - Object* find(Loader& loader) throw(RuntimeException); + Object* find(Loader& loader) noexcept(false); /** Devuelve de una copia del objeto recibido como parámetro e incrementa la cuenta de utilizacion @@ -362,7 +362,7 @@ public: \warning Cada llamada a este método deberia tener su correspondiente liberacion invocando a #release cuando dejemos de usar la instancia. */ - Object* duplicate(const Object* object) throw(RuntimeException); + Object* duplicate(const Object* object) noexcept(false); /** Permite conocer si un determinado objeto esta alojado en el área de almacenamiento. No @@ -374,7 +374,7 @@ public: \return \em true Si el objeto identificado por el Loader esta en el área de almacenamiento o \em false en otro caso. */ - bool isLoaded(const Loader& loader) throw(RuntimeException); + bool isLoaded(const Loader& loader) noexcept(false); /** Transfiere la informacion del objeto recibido como parámetro al medio fisico usando el Recorder @@ -383,7 +383,7 @@ public: \param connection Conexion usada si fuera necesario acceder al medio fisico. \param recorder Grabador usado para transferir los datos al medio fisico. */ - void apply(dbms::Connection& connection, Recorder& recorder) throw(RuntimeException, dbms::DatabaseException); + void apply(dbms::Connection& connection, Recorder& recorder) noexcept(false); /** Elimina la informacion del objeto recibido como parámetro del medio fisico usando el Eraser @@ -394,7 +394,7 @@ public: \warning Si la cuenta de utilizacion del objeto es 1 se liberaría en otro caso se devolvería una excepción. */ - void apply(dbms::Connection& connection, Eraser& eraser) throw(RuntimeException, dbms::DatabaseException); + void apply(dbms::Connection& connection, Eraser& eraser) noexcept(false); /** Habilita la reutilizacion del espacio de memoria ocupado por un objeto instanciado mediate #instance. @@ -409,7 +409,7 @@ public: \warning Si el objeto recibido como parámetro no fue reservado mediate #instance no tiene ningun efecto. */ - void release(Object** object) throw(RuntimeException); + void release(Object** object) noexcept(false); /** Elimina toda la informacion referente al objeto recibido como parámetro, siempre y cuando @@ -421,7 +421,7 @@ public: ningun efecto. \li La instancia a liberar solo puede tener 1 en su cuenta de utilizacion. */ - void erase(Object** object) throw(RuntimeException); + void erase(Object** object) noexcept(false); /** Marca el objeto recibido como pendiente de recarga de datos. @@ -432,87 +432,87 @@ public: ningun efecto. \li La instancia a marcar solo deberia tener una unica instancia en uso. */ - void dirty(Object* object) throw(RuntimeException); + void dirty(Object* object) noexcept(false); /** Establece el tamanho de las instancias de los objetos contenidos en este área de almacenamiento. \param _sizeof Numero de bytes ocupado por cada una de las instancias. */ - void setSizeof(const Size _sizeof) throw() { a_sizeof = _sizeof + sizeof(Instance); } + void setSizeof(const Size _sizeof) { a_sizeof = _sizeof + sizeof(Instance); } /** Devuelve el numero maximo de bytes teorico que puede llegar a reservar este área de almacenamiento. \return el numero maximo de bytes teorico que puede llegar a reservar este área de almacenamiento. */ - Size getMaxSizeOf() const throw() { return a_maxSize * a_sizeof; } + Size getMaxSizeOf() const { return a_maxSize * a_sizeof; } /** Devuelve el numero de bytes teorico que puede llegar a reservar este área de almacenamiento. \return el numero de bytes teorico que puede llegar a reservar este área de almacenamiento. */ - Size getSizeOf() const throw() { return a_directory.size() * a_sizeof; } + Size getSizeOf() const { return a_directory.size() * a_sizeof; } /** Devuelve un iterator al primero de los objetos contenido en el área del almacenamiento. \return Un iterator al primero de los objetos contenido en el área del almacenamiento. */ - iterator begin() throw() { return a_directory.begin(); } + iterator begin() { return a_directory.begin(); } /** Devuelve un iterator al primero de los objetos contenido en el área del almacenamiento. \return Un iterator al primero de los objetos contenido en el área del almacenamiento. */ - const_iterator begin() const throw() { return a_directory.begin(); } + const_iterator begin() const { return a_directory.begin(); } /** Devuelve un iterator al fin de los objetos contenidos en el área del almacenamiento. \return Un iterator al fin de los objetos contenidos en el área del almacenamiento. */ - iterator end() throw() { return a_directory.end(); } + iterator end() { return a_directory.end(); } /** Devuelve un iterator al fin de los objetos contenidos en el área del almacenamiento. \return Un iterator al fin de los objetos contenidos en el área del almacenamiento. */ - const_iterator end() const throw() { return a_directory.end(); } + const_iterator end() const { return a_directory.end(); } /** Devuelve el puntero sobre el que esta posicionado el iterador recibido como parámetro. \return El puntero sobre el que esta posicionado el iterador recibido como parámetro. */ - static Object* data(iterator ii) throw() { return ii->second->object; } + static Object* data(iterator ii) { return ii->second->object; } /** Devuelve el puntero sobre el que esta posicionado el iterador recibido como parámetro. \return El puntero sobre el que esta posicionado el iterador recibido como parámetro. */ - static const Object* data(const_iterator ii) throw() { return ii->second->object; } + static const Object* data(const_iterator ii) { return ii->second->object; } /** Devuelve una cadena con la informacion referente a este área de almacenamiento. \return Una cadena con la informacion referente a este área de almacenamiento. */ - std::string asString() const throw(); + std::string asString() const ; /** Devuelve un documento XML con la informacion referente a esta instancia. \param parent Nodo XML del que dependende la informacion. @return un documento XML con la informacion referente a esta instancia. */ - xml::Node* asXML(xml::Node* parent) const throw(); + xml::Node* asXML(xml::Node* parent) const ; protected: /** Descarga del área de almacenamiento todos los objetos que estuviera cargados. Este método se invoca desde anna::dbos::Repository::clear */ - void clear() throw(RuntimeException); + void clear() noexcept(false); /** Devuelve un literal con el entero recibido tratado como una cantidad en bytes. \return un literal con el entero recibido tratado como un cantidad en bytes */ - static std::string asMemorySize(const Size size) throw(); + static std::string asMemorySize(const Size size) ; private: typedef std::map ::value_type value_type; @@ -528,13 +528,13 @@ private: Holes() : a_size(0) {;} - bool insert(Instance* instance, const Mode::_v mode) throw(); - void erase(Instance* instance) throw(); - Instance* front() throw() { return a_holes.front(); } - int size() const throw() { return a_size; } - int empty() const throw() { return a_holes.empty(); } - void pop_front() throw() { a_holes.pop_front(); a_size --; } - void clear() throw() { a_holes.clear(); a_size = 0; } + bool insert(Instance* instance, const Mode::_v mode) ; + void erase(Instance* instance) ; + Instance* front() { return a_holes.front(); } + int size() const { return a_size; } + int empty() const { return a_holes.empty(); } + void pop_front() { a_holes.pop_front(); a_size --; } + void clear() { a_holes.clear(); a_size = 0; } private: hole_container a_holes; @@ -563,8 +563,8 @@ private: class Block { public: Block(ObjectAllocator objectAllocator, const Size maxSize); - Instance* getInstance() throw() { return (a_size < a_maxSize) ? &a_instances [a_size ++] : NULL; } - void reset() throw() { a_size = 0; } + Instance* getInstance() { return (a_size < a_maxSize) ? &a_instances [a_size ++] : NULL; } + void reset() { a_size = 0; } private: Instance* a_instances; @@ -593,10 +593,10 @@ private: typedef inprogress_container::iterator inprogress_iterator; inprogress_container a_inprogress; - inprogress_iterator inprogress_begin () const throw () { return a_inprogress.begin (); } - inprogress_iterator inprogress_end () const throw () { return a_inprogress.end (); } - static DBIndex index (inprogress_iterator ii) throw () { return *ii; } - bool isInProgress (const DBIndex index) const throw (); + inprogress_iterator inprogress_begin () const { return a_inprogress.begin (); } + inprogress_iterator inprogress_end () const { return a_inprogress.end (); } + static DBIndex index (inprogress_iterator ii) { return *ii; } + bool isInProgress (const DBIndex index) const ; */ /* @@ -606,15 +606,15 @@ private: StorageArea(const char* name, const Size maxSize, ObjectAllocator, const AccessMode::_v, const int errorCode); StorageArea(const StorageArea&); - Object* reload(dbms::Connection*, Loader&, Instance*) throw(RuntimeException, dbms::DatabaseException); - void checkIncoherence(Instance*) throw(); - bool quickReusing(Instance*) throw(); - void verifyStatus(StorageArea::Instance*, const bool ignoreDirty = false) throw(RuntimeException); - Instance* allocate() throw(); - Instance* reuse() throw(); + Object* reload(dbms::Connection*, Loader&, Instance*) noexcept(false); + void checkIncoherence(Instance*) ; + bool quickReusing(Instance*) ; + void verifyStatus(StorageArea::Instance*, const bool ignoreDirty = false) noexcept(false); + Instance* allocate() ; + Instance* reuse() ; - static Instance* instance(iterator& ii) throw() { return ii->second; } - static std::string asString(const Instance*) throw(); + static Instance* instance(iterator& ii) { return ii->second; } + static std::string asString(const Instance*) ; friend class Repository; };