44 using namespace libdap ;
109 const string &real_name,
116 BESDEBUG(
"bes",
"BESContainerStorageCatalog::add_container: "
117 <<
"adding container with name \"" << sym_name
118 <<
"\", real name \"" << real_name
119 <<
"\", type \"" << type <<
"\"" << endl ) ;
120 string::size_type stopat = real_name.length() - 1 ;
121 while( real_name[stopat] ==
'/' )
125 string new_name = real_name.substr( 0, stopat + 1 ) ;
128 string::size_type slash = new_name.rfind(
"/" ) ;
129 if( slash != string::npos )
131 basename = new_name.substr( slash+1, new_name.length() - slash ) ;
135 basename = new_name ;
139 if( !_utils->
include( basename ) )
141 string s =
"Attempting to create a container with real name "
142 + real_name +
" which is on the exclude list" ;
148 string new_type = type ;
154 for( ; i != ie && !done; i++ )
160 if( reg_expr.match( real_name.c_str(), real_name.length() ) ==
161 static_cast<int>(real_name.length()) )
163 new_type = match.
type ;
169 string serr = (string)
"Unable to match data type, "
170 +
"malformed Catalog TypeMatch parameter "
171 +
"in bes configuration file around "
172 + match.
reg +
": " + e.get_error_message() ;
191 list<string> &provides )
193 string node_type =
"" ;
197 for( ; i != ie && !done; i++ )
203 if( reg_expr.match( inQuestion.c_str(), inQuestion.length() ) ==
204 static_cast<int>(inQuestion.length()) )
206 node_type = match.
type ;
212 string serr = (string)
"Unable to determine data products (is data), "
213 +
"malformed Catalog TypeMatch parameter "
214 +
"in bes configuration file around "
215 + match.
reg +
": " + e.get_error_message() ;
236 << (
void *)
this <<
")" << endl ;
241 _utils->
dump( strm ) ;
BESCatalogUtils::match_citer match_list_begin() const
BESCatalogUtils::match_citer match_list_end() const
exception thrown if inernal error encountered
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...
a C++ interface to POSIX regular expression functions.
virtual void add_container(BESContainer *c)
add the passed container to the list of containers in volatile storage
vector< type_reg >::const_iterator match_citer
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
static BESServiceRegistry * TheRegistry()
static ostream & LMarg(ostream &strm)
bool follow_sym_links() const
virtual void dump(ostream &strm) const
dump the contents of this object to the specified ostream
virtual ~BESContainerStorageCatalog()
error thrown if the BES is not allowed to access the resource requested
#define BESDEBUG(x, y)
macro used to send debug information to the debug stream
virtual bool include(const string &inQuestion) const
static BESCatalogUtils * Utils(const string &name)
virtual const string & get_name() const
retrieve the name of this persistent store
const string & get_root_dir() const
virtual void services_handled(const string &handler, list< string > &services)
returns the list of servies provided by the handler in question