9 #ifndef anna_dbos_StorageArea_hpp 10 #define anna_dbos_StorageArea_hpp 96 static const char* asString(
const _v v) ;
105 None = 0, Dirty = 1, Incoherent = 2, Empty = 4, HasHole = 8, Ready = 16, InProgress = 32,
106 NoDirty = ~Dirty, NoIncoherent = ~Incoherent, NoEmpty = ~Empty, NoHasHole = ~HasHole, NoReady = ~Ready, Done = ~InProgress
133 static const int NoExceptionWhenNotFound = -1;
136 typedef std::map <Index, Instance*>::iterator
iterator;
154 const std::string&
getName()
const {
return a_name; }
177 return instance(&connection, loader);
226 return instance(&connection, crossedLoader, loader);
274 return instance(NULL, loader);
296 return create(&connection, creator);
365 Object* duplicate(
const Object*
object) noexcept(
false);
377 bool isLoaded(
const Loader& loader) noexcept(
false);
412 void release(
Object**
object) noexcept(
false);
424 void erase(
Object**
object) noexcept(
false);
435 void dirty(
Object*
object) noexcept(
false);
441 void setSizeof(
const Size _sizeof) { a_sizeof = _sizeof +
sizeof(Instance); }
459 iterator
begin() {
return a_directory.begin(); }
465 const_iterator
begin()
const {
return a_directory.begin(); }
471 iterator
end() {
return a_directory.end(); }
477 const_iterator
end()
const {
return a_directory.end(); }
483 static Object*
data(iterator ii) {
return ii->second->object; }
489 static const Object*
data(const_iterator ii) {
return ii->second->object; }
495 std::string asString()
const ;
509 void clear() noexcept(
false);
515 static std::string asMemorySize(
const Size size) ;
518 typedef std::map <Index, Instance*>::value_type value_type;
524 struct Mode {
enum _v { ReadyToReuse, TimeWait }; };
526 typedef std::list <Instance*> hole_container;
527 typedef hole_container::iterator hole_iterator;
529 Holes() : a_size(0) {;}
531 bool insert(Instance* instance,
const Mode::_v mode) ;
532 void erase(Instance* instance) ;
533 Instance* front() {
return a_holes.front(); }
534 int size()
const {
return a_size; }
535 int empty()
const {
return a_holes.empty(); }
536 void pop_front() { a_holes.pop_front(); a_size --; }
537 void clear() { a_holes.clear(); a_size = 0; }
540 hole_container a_holes;
550 friend struct Instance;
556 Holes::hole_iterator holeIterator;
558 Instance() : copyCounter(0), object(NULL), flags(
Flag::None) {;}
566 Instance* getInstance() {
return (a_size < a_maxSize) ? &a_instances [a_size ++] : NULL; }
567 void reset() { a_size = 0; }
570 Instance* a_instances;
575 const std::string a_name;
576 const Size a_maxSize;
583 std::map <Index, Instance*> a_directory;
585 Block* a_currentBlock;
610 void checkIncoherence(Instance*) ;
611 bool quickReusing(Instance*) ;
612 void verifyStatus(StorageArea::Instance*,
const bool ignoreDirty =
false) noexcept(false);
613 Instance* allocate() ;
616 static Instance* instance(iterator& ii) {
return ii->second; }
617 static std::string asString(
const Instance*) ;
Object * instance(dbms::Connection &connection, Loader &loader) noexcept(false)
Definition: StorageArea.hpp:176
iterator end()
Definition: StorageArea.hpp:471
const_iterator end() const
Definition: StorageArea.hpp:477
Definition: StorageArea.hpp:103
Definition: StorageArea.hpp:115
Definition: Connection.hpp:38
Object * create(Creator &creator) noexcept(false)
Definition: StorageArea.hpp:334
_v
Definition: StorageArea.hpp:104
Object * instance(dbms::Connection &connection, CrossedLoader &crossedLoader, Loader &loader) noexcept(false)
Definition: StorageArea.hpp:224
Definition: Object.hpp:35
const std::string & getName() const
Definition: StorageArea.hpp:154
Size getSizeOf() const
Definition: StorageArea.hpp:453
_v
Definition: StorageArea.hpp:68
unsigned int Counter
Definition: defines.hpp:20
std::vector< Block * > Blocks
Definition: StorageArea.hpp:135
static const Object * data(const_iterator ii)
Definition: StorageArea.hpp:489
Object * create(dbms::Connection &connection, Creator &creator) noexcept(false)
Definition: StorageArea.hpp:295
Definition: Creator.hpp:22
Definition: StorageArea.hpp:73
const_iterator begin() const
Definition: StorageArea.hpp:465
static Object * data(iterator ii)
Definition: StorageArea.hpp:483
Definition: Recorder.hpp:22
Definition: CrossedLoader.hpp:42
Definition: Repository.hpp:39
Value
Definition: StorageArea.hpp:116
unsigned int Size
Definition: defines.hpp:17
Definition: Loader.hpp:28
int getErrorCode() const
Definition: StorageArea.hpp:148
xml::Node Node
Definition: Node.hpp:21
iterator begin()
Definition: StorageArea.hpp:459
Definition: StorageArea.hpp:67
std::map< Index, Instance * >::iterator iterator
Definition: StorageArea.hpp:136
std::map< Index, Instance * >::const_iterator const_iterator
Definition: StorageArea.hpp:137
Definition: Eraser.hpp:24
Definition: StorageArea.hpp:81
Definition: StorageArea.hpp:58
_v
Definition: StorageArea.hpp:524
Definition: StorageArea.hpp:524
Size getMaxSizeOf() const
Definition: StorageArea.hpp:447
Object * instance(Loader &loader) noexcept(false)
Definition: StorageArea.hpp:273
void setSizeof(const Size _sizeof)
Definition: StorageArea.hpp:441
Object *(* ObjectAllocator)()
Definition: ObjectAllocator.hpp:18