39 using std::stringstream;
42 #include "BESContainerStorageFile.h"
43 #include "BESFileContainer.h"
44 #include "TheBESKeys.h"
45 #include "BESInternalError.h"
46 #include "BESSyntaxUserError.h"
48 #include "BESServiceRegistry.h"
86 string key =
"BES.Container.Persistence.File." + n;
90 string s = key +
" not defined in BES configuration file";
94 ifstream persistence_file(_file.c_str());
96 if (!persistence_file) {
97 char *err = strerror(myerrno);
98 string s =
"Unable to open persistence file " + _file +
": ";
102 s +=
"Unknown error";
110 while (!persistence_file.eof()) {
112 persistence_file.getline(cline, 80);
113 if (!persistence_file.eof()) {
115 BESContainerStorageFile::container *c =
new BESContainerStorageFile::container;
116 strm >> c->_symbolic_name;
117 strm >> c->_real_name;
118 strm >> c->_container_type;
121 if (c->_symbolic_name ==
"" || c->_real_name ==
"" || c->_container_type ==
"") {
123 persistence_file.close();
124 string s =
"Incomplete container persistence line in file " + _file;
128 persistence_file.close();
130 string s =
"Too many fields in persistence file " + _file;
133 _container_list[c->_symbolic_name] = c;
136 persistence_file.close();
139 persistence_file.close();
144 BESContainerStorageFile::~BESContainerStorageFile()
146 BESContainerStorageFile::Container_citer i = _container_list.begin();
147 BESContainerStorageFile::Container_citer ie = _container_list.end();
148 for (; i != ie; i++) {
149 BESContainerStorageFile::container *c = (*i).second;
169 BESContainerStorageFile::Container_citer i;
170 i = _container_list.find(sym_name);
171 if (i != _container_list.end()) {
172 BESContainerStorageFile::container *c = (*i).second;
173 ret_container =
new BESFileContainer(c->_symbolic_name, c->_real_name, c->_container_type);
176 return ret_container;
191 string err =
"Unable to add a container to a file, not yet implemented";
197 string err =
"Unable to add a container to a file, not yet implemented";
213 BESContainerStorageFile::Container_iter i;
214 i = _container_list.find(s_name);
215 if (i != _container_list.end()) {
216 BESContainerStorageFile::container *c = (*i).second;
217 _container_list.erase(i);
235 while (_container_list.size() != 0) {
236 Container_iter ci = _container_list.begin();
237 BESContainerStorageFile::container *c = (*ci).second;
238 _container_list.erase(ci);
285 BESContainerStorageFile::Container_citer i;
286 i = _container_list.begin();
287 for (i = _container_list.begin(); i != _container_list.end(); i++) {
288 BESContainerStorageFile::container *c = (*i).second;
289 string sym = c->_symbolic_name;
290 string real = c->_real_name;
291 string type = c->_container_type;
305 strm << BESIndent::LMarg <<
"BESContainerStorageFile::dump - (" << (
void *)
this <<
")" << endl;
307 strm << BESIndent::LMarg <<
"name: " <<
get_name() << endl;
308 strm << BESIndent::LMarg <<
"file: " << _file << endl;
309 if (_container_list.size()) {
310 strm << BESIndent::LMarg <<
"containers:" << endl;
312 BESContainerStorageFile::Container_citer i = _container_list.begin();
313 BESContainerStorageFile::Container_citer ie = _container_list.end();
314 for (i = _container_list.begin(); i != ie; i++) {
315 BESContainerStorageFile::container *c = (*i).second;
316 strm << BESIndent::LMarg << c->_symbolic_name;
317 strm <<
", " << c->_real_name;
318 strm <<
", " << c->_container_type;
321 BESIndent::UnIndent();
324 strm << BESIndent::LMarg <<
" containers: none" << endl;
326 BESIndent::UnIndent();