33 #include "BESContainerStorageCatalog.h" 34 #include "BESContainer.h" 35 #include "BESCatalogUtils.h" 36 #include "BESInternalError.h" 37 #include "BESForbiddenError.h" 39 #include "BESServiceRegistry.h" 67 _utils = BESCatalogUtils::Utils(n);
68 _root_dir = _utils->get_root_dir();
69 _follow_sym_links = _utils->follow_sym_links();
72 BESContainerStorageCatalog::~BESContainerStorageCatalog()
110 BESDEBUG(
"bes",
"BESContainerStorageCatalog::add_container: " 111 <<
"adding container with name \"" << sym_name <<
"\", real name \"" 112 << real_name <<
"\", type \"" << type <<
"\"" << endl);
114 string::size_type stopat = real_name.length() - 1;
115 while (real_name[stopat] ==
'/') {
118 string new_name = real_name.substr(0, stopat + 1);
121 string::size_type slash = new_name.rfind(
"/");
122 if (slash != string::npos) {
123 basename = new_name.substr(slash + 1, new_name.length() - slash);
130 if (!_utils->include(basename)) {
131 string s =
"Attempting to create a container with real name " + real_name +
" which is on the exclude list";
137 string new_type = type;
138 if (new_type ==
"") {
139 BESCatalogUtils::match_citer i = _utils->match_list_begin();
140 BESCatalogUtils::match_citer ie = _utils->match_list_end();
142 for (; i != ie && !done; i++) {
144 BESRegex reg_expr(match.reg.c_str());
145 if (reg_expr.match(real_name.c_str(), real_name.length()) == static_cast<int>(real_name.length())) {
146 new_type = match.type;
167 string node_type =
"";
168 BESCatalogUtils::match_citer i = _utils->match_list_begin();
169 BESCatalogUtils::match_citer ie = _utils->match_list_end();
171 for (; i != ie && !done; i++) {
173 BESRegex reg_expr(match.reg.c_str());
174 if (reg_expr.match(inQuestion.c_str(), inQuestion.length()) == static_cast<int>(inQuestion.length())) {
175 node_type = match.type;
194 strm << BESIndent::LMarg <<
"BESContainerStorageCatalog::dump - (" << (
void *)
this <<
")" << endl;
196 strm << BESIndent::LMarg <<
"name: " <<
get_name() << endl;
197 strm << BESIndent::LMarg <<
"utils: " <<
get_name() << endl;
200 BESIndent::UnIndent();
201 BESIndent::UnIndent();
virtual void dump(ostream &strm) const
dumps information about this object
BESContainerStorageCatalog(const string &n)
create an instance of this persistent store with the given name.
implementation of BESContainerStorage that stores containers in memory for the duration of this proce...
virtual void add_container(BESContainer *c)
add the passed container to the list of containers in volatile storage
virtual bool isData(const string &inQuestion, list< string > &provides)
is the specified node in question served by a request handler
virtual void add_container(const string &sym_name, const string &real_name, const string &type)
adds a container with the provided information
virtual void dump(ostream &strm) const
dump the contents of this object to the specified ostream
error thrown if the BES is not allowed to access the resource requested
virtual const string & get_name() const
retrieve the name of this persistent store
virtual void services_handled(const string &handler, list< string > &services)
returns the list of servies provided by the handler in question