39 #include "BESContainerStorageList.h"
40 #include "BESContainerStorage.h"
41 #include "BESSyntaxUserError.h"
42 #include "BESContainer.h"
43 #include "TheBESKeys.h"
51 BESContainerStorageList::BESContainerStorageList() :
56 BESContainerStorageList::~BESContainerStorageList()
58 BESContainerStorageList::persistence_list *pl = _first;
60 if (pl->_persistence_obj) {
61 delete pl->_persistence_obj;
63 BESContainerStorageList::persistence_list *next = pl->_next;
85 _first =
new BESContainerStorageList::persistence_list;
86 _first->_persistence_obj = cp;
87 _first->_reference = 1;
92 BESContainerStorageList::persistence_list *pl = _first;
94 while (done ==
false) {
95 if (pl->_persistence_obj->get_name() != cp->
get_name()) {
100 pl->_next =
new BESContainerStorageList::persistence_list;
101 pl->_next->_reference = 1;
102 pl->_next->_persistence_obj = cp;
103 pl->_next->_next = 0;
130 BESContainerStorageList::persistence_list *pl = _first;
133 while (done ==
false) {
135 if (pl->_persistence_obj && pl->_persistence_obj->get_name() == persist_name) {
166 BESContainerStorageList::persistence_list *pl = _first;
167 BESContainerStorageList::persistence_list *last = 0;
170 while (done ==
false) {
172 if (pl->_persistence_obj && pl->_persistence_obj->get_name() == persist_name) {
176 if (!pl->_reference) {
178 _first = _first->_next;
182 throw BESInternalError(
"ContainerStorageList last is null", __FILE__, __LINE__);
183 last->_next = pl->_next;
185 delete pl->_persistence_obj;
215 BESContainerStorageList::persistence_list *pl = _first;
217 while (done ==
false) {
219 if (persist_name == pl->_persistence_obj->get_name()) {
220 ret = pl->_persistence_obj;
234 bool BESContainerStorageList::isnice()
237 string key =
"BES.Container.Persistence";
241 if (isnice ==
"Nice" || isnice ==
"nice" || isnice ==
"NICE")
275 BESContainerStorageList::persistence_list *pl = _first;
277 while (done ==
false) {
279 ret_container = pl->_persistence_obj->look_for(sym_name);
291 if (!ret_container) {
293 LOG(
"Could not find the symbolic name " << sym_name << endl);
296 string s = (string)
"Could not find the symbolic name " + sym_name;
301 return ret_container;
321 BESContainerStorageList::persistence_list *pl = _first;
323 (void) pl->_persistence_obj->del_container(sym_name);
343 BESContainerStorageList::persistence_list *pl = _first;
345 std::map<string, string> props;
346 props[
"name"] = pl->_persistence_obj->get_name();
347 info.begin_tag(
"store", &props);
348 pl->_persistence_obj->show_containers(info);
349 info.end_tag(
"store");
363 strm << BESIndent::LMarg <<
"BESContainerStorageList::dump - (" << (
void *)
this <<
")" << endl;
365 BESContainerStorageList::persistence_list *pl = _first;
367 strm << BESIndent::LMarg <<
"container storage:" << endl;
370 pl->_persistence_obj->dump(strm);
373 BESIndent::UnIndent();
376 strm << BESIndent::LMarg <<
"container storage: empty" << endl;
378 BESIndent::UnIndent();
382 BESContainerStorageList::TheList()
384 if (_instance == 0) {