39using std::set_new_handler;
43#include "BESMemoryManager.h"
47#include "BESMemoryGlobalArea.h"
53bool BESMemoryManager::_storage_used(
false);
54new_handler BESMemoryManager::_global_handler;
57BESMemoryManager::initialize_memory_pool()
65BESMemoryManager::register_global_pool()
67 _global_handler = set_new_handler( BESMemoryManager::swap_memory ) ;
71BESMemoryManager::swap_memory()
73 INFO_LOG(
"BESMemoryManager::This is just a simulation, here we tell BES to go to persistence state" << endl);
74 set_new_handler( BESMemoryManager::release_global_pool ) ;
78BESMemoryManager::unregister_global_pool()
80 if( check_memory_pool() )
82 set_new_handler( _global_handler ) ;
90BESMemoryManager::check_memory_pool()
94 BESDEBUG(
"bes",
"BES: global pool is used, trying to get it back..." << endl ) ;
96 if( _memory->reclaim_memory() )
98 _storage_used = false ;
99 BESDEBUG(
"bes",
"OK" << endl ) ;
104 BESDEBUG(
"bes",
"FAILED" << endl ) ;
112BESMemoryManager::release_global_pool() throw (bad_alloc)
120 BESDEBUG(
"bes",
"BES Warning: low in memory, " <<
"releasing global memory pool!" << endl);
122 INFO_LOG(
"BES Warning: low in memory, " <<
"releasing global memory pool!" << endl);
126 cerr <<
"Exception while trying to release the global memory pool. (" << e.get_verbose_message() <<
").";
129 cerr <<
"Exception while trying to release the global memory pool.";
132 _storage_used = true ;
133 _memory->release_memory() ;
137 set_new_handler( 0 ) ;
Base exception class for the BES with basic string message.