00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include <stdio.h>
00034 #include <errno.h>
00035 #include <fstream>
00036 #include <sstream>
00037
00038 using std::ifstream ;
00039 using std::ofstream ;
00040 using std::ios_base ;
00041 using std::ostringstream ;
00042
00043 #include "BESContainer.h"
00044 #include "TheBESKeys.h"
00045 #include "BESUncompressManager.h"
00046 #include "BESCache.h"
00047 #include "BESContainerStorageException.h"
00048
00049 #define BES_POPEN_BUFFER_SIZE 4096
00050
00051 BESContainer::BESContainer(const string &s)
00052 : _valid( false ),
00053 _real_name( "" ),
00054 _constraint( "" ),
00055 _symbolic_name( s ),
00056 _container_type( "" ),
00057 _attributes( "" )
00058 {
00059 }
00060
00061 BESContainer::BESContainer( const BESContainer ©_from )
00062 : _valid( copy_from._valid ),
00063 _real_name( copy_from._real_name ),
00064 _constraint( copy_from._constraint ),
00065 _symbolic_name( copy_from._symbolic_name ),
00066 _container_type( copy_from._container_type ),
00067 _attributes( copy_from._attributes )
00068 {
00069 }
00070
00071 string
00072 BESContainer::access()
00073 {
00074
00075 BESKeys *keys = TheBESKeys::TheKeys() ;
00076 BESCache cache( *keys, "BES.CacheDir", "BES.CachePrefix", "BES.CacheSize" );
00077
00078 return BESUncompressManager::TheManager()->uncompress( _real_name, cache ) ;
00079 }
00080
00088 void
00089 BESContainer::dump( ostream &strm ) const
00090 {
00091 strm << BESIndent::LMarg << "BESContainer::dump - ("
00092 << (void *)this << ")" << endl ;
00093 BESIndent::Indent() ;
00094 strm << BESIndent::LMarg << "is valid: " << _valid << endl ;
00095 strm << BESIndent::LMarg << "symbolic name: " << _symbolic_name << endl ;
00096 strm << BESIndent::LMarg << "real name: " << _real_name << endl ;
00097 strm << BESIndent::LMarg << "data type: " << _container_type << endl ;
00098 strm << BESIndent::LMarg << "constraint: " << _constraint << endl ;
00099 strm << BESIndent::LMarg << "attributes: " << _attributes << endl ;
00100 BESIndent::UnIndent() ;
00101 }
00102