37 using std::set_new_handler;
41 #include "BESMemoryManager.h"
45 #include "BESMemoryGlobalArea.h"
51 bool BESMemoryManager::_storage_used(
false);
52 new_handler BESMemoryManager::_global_handler;
55 BESMemoryManager::initialize_memory_pool()
63 BESMemoryManager::register_global_pool()
65 _global_handler = set_new_handler( BESMemoryManager::swap_memory ) ;
69 BESMemoryManager::swap_memory()
71 *(BESLog::TheLog()) <<
"BESMemoryManager::This is just a simulation, here we tell BES to go to persistence state" << endl;
72 set_new_handler( BESMemoryManager::release_global_pool ) ;
76 BESMemoryManager::unregister_global_pool()
78 if( check_memory_pool() )
80 set_new_handler( _global_handler ) ;
88 BESMemoryManager::check_memory_pool()
92 BESDEBUG(
"bes",
"BES: global pool is used, trying to get it back..." << endl ) ;
94 if( _memory->reclaim_memory() )
96 _storage_used = false ;
97 BESDEBUG(
"bes",
"OK" << endl ) ;
102 BESDEBUG(
"bes",
"FAILED" << endl ) ;
110 BESMemoryManager::release_global_pool() throw (bad_alloc)
118 BESDEBUG(
"bes",
"BES Warning: low in memory, " <<
"releasing global memory pool!" << endl);
120 *(BESLog::TheLog()) <<
"BES Warning: low in memory, " <<
"releasing global memory pool!" << endl;
124 cerr <<
"Exception while trying to release the global memory pool. (" << e.get_verbose_message() <<
").";
127 cerr <<
"Exception while trying to release the global memory pool.";
130 _storage_used = true ;
131 _memory->release_memory() ;
135 set_new_handler( 0 ) ;