37 #include "BESContainerStorageList.h"
38 #include "BESContainerStorage.h"
39 #include "BESSyntaxUserError.h"
40 #include "BESContainer.h"
41 #include "TheBESKeys.h"
49 BESContainerStorageList::BESContainerStorageList() :
54 BESContainerStorageList::~BESContainerStorageList()
56 BESContainerStorageList::persistence_list *pl = _first;
58 if (pl->_persistence_obj) {
59 delete pl->_persistence_obj;
61 BESContainerStorageList::persistence_list *next = pl->_next;
83 _first =
new BESContainerStorageList::persistence_list;
84 _first->_persistence_obj = cp;
85 _first->_reference = 1;
90 BESContainerStorageList::persistence_list *pl = _first;
92 while (done ==
false) {
93 if (pl->_persistence_obj->get_name() != cp->
get_name()) {
98 pl->_next =
new BESContainerStorageList::persistence_list;
99 pl->_next->_reference = 1;
100 pl->_next->_persistence_obj = cp;
101 pl->_next->_next = 0;
128 BESContainerStorageList::persistence_list *pl = _first;
131 while (done ==
false) {
133 if (pl->_persistence_obj && pl->_persistence_obj->get_name() == persist_name) {
164 BESContainerStorageList::persistence_list *pl = _first;
165 BESContainerStorageList::persistence_list *last = 0;
168 while (done ==
false) {
170 if (pl->_persistence_obj && pl->_persistence_obj->get_name() == persist_name) {
174 if (!pl->_reference) {
176 _first = _first->_next;
180 throw BESInternalError(
"ContainerStorageList last is null", __FILE__, __LINE__);
181 last->_next = pl->_next;
183 delete pl->_persistence_obj;
213 BESContainerStorageList::persistence_list *pl = _first;
215 while (done ==
false) {
217 if (persist_name == pl->_persistence_obj->get_name()) {
218 ret = pl->_persistence_obj;
232 bool BESContainerStorageList::isnice()
235 string key =
"BES.Container.Persistence";
239 if (isnice ==
"Nice" || isnice ==
"nice" || isnice ==
"NICE")
273 BESContainerStorageList::persistence_list *pl = _first;
275 while (done ==
false) {
277 ret_container = pl->_persistence_obj->look_for(sym_name);
289 if (!ret_container) {
291 LOG(
"Could not find the symbolic name " << sym_name << endl);
294 string s = (string)
"Could not find the symbolic name " + sym_name;
299 return ret_container;
319 BESContainerStorageList::persistence_list *pl = _first;
321 (void) pl->_persistence_obj->del_container(sym_name);
341 BESContainerStorageList::persistence_list *pl = _first;
343 map<string, string> props;
344 props[
"name"] = pl->_persistence_obj->get_name();
345 info.begin_tag(
"store", &props);
346 pl->_persistence_obj->show_containers(info);
347 info.end_tag(
"store");
361 strm << BESIndent::LMarg <<
"BESContainerStorageList::dump - (" << (
void *)
this <<
")" << endl;
363 BESContainerStorageList::persistence_list *pl = _first;
365 strm << BESIndent::LMarg <<
"container storage:" << endl;
368 pl->_persistence_obj->dump(strm);
371 BESIndent::UnIndent();
374 strm << BESIndent::LMarg <<
"container storage: empty" << endl;
376 BESIndent::UnIndent();
380 BESContainerStorageList::TheList()
382 if (_instance == 0) {