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 #ifdef __GNUG__
00034 #pragma implementation
00035 #endif
00036
00037 #include "BESVersionInfo.h"
00038 #include "BESInfoList.h"
00039 #include "BESHandlerException.h"
00040
00049 BESVersionInfo::BESVersionInfo()
00050 : BESInfo(),
00051 _inbes( false ),
00052 _inhandler( false ),
00053 _info( 0 )
00054 {
00055 _info = BESInfoList::TheList()->build_info() ;
00056 }
00057
00058 BESVersionInfo::~BESVersionInfo()
00059 {
00060 if( _info ) delete _info ;
00061 }
00062
00063 void
00064 BESVersionInfo::beginBESVersion( )
00065 {
00066 if( _inbes || _inhandler )
00067 {
00068 throw BESHandlerException( "Attempting to begin BES version information while already adding BES or Handler info", __FILE__, __LINE__ ) ;
00069 }
00070 _inbes = true ;
00071 _info->begin_tag( "BES" ) ;
00072 }
00073
00074 void
00075 BESVersionInfo::addBESVersion( const string &n, const string &v )
00076 {
00077 if( !_inbes )
00078 {
00079 throw BESHandlerException( "Attempting to add BES version information while not in BES tag", __FILE__, __LINE__ ) ;
00080 }
00081 _info->begin_tag( "lib" ) ;
00082 _info->add_tag( "name", n ) ;
00083 _info->add_tag( "version", v ) ;
00084 _info->end_tag( "lib" ) ;
00085 }
00086
00087 void
00088 BESVersionInfo::endBESVersion( )
00089 {
00090 if( !_inbes )
00091 {
00092 throw BESHandlerException( "Attempting to end BES version information while not in BES tag", __FILE__, __LINE__ ) ;
00093 }
00094 _inbes = false ;
00095 _info->end_tag( "BES" ) ;
00096 }
00097
00098 void
00099 BESVersionInfo::beginHandlerVersion( )
00100 {
00101 if( _inbes || _inhandler )
00102 {
00103 throw BESHandlerException( "Attempting to begin Handler version information while already adding BES or Handler info", __FILE__, __LINE__ ) ;
00104 }
00105 _inhandler = true ;
00106 _info->begin_tag( "Handlers" ) ;
00107 }
00108
00109 void
00110 BESVersionInfo::addHandlerVersion( const string &n, const string &v )
00111 {
00112 if( !_inhandler )
00113 {
00114 throw BESHandlerException( "Attempting to add Handler version information while not in Handler tag", __FILE__, __LINE__ ) ;
00115 }
00116 _info->begin_tag( "lib" ) ;
00117 _info->add_tag( "name", n ) ;
00118 _info->add_tag( "version", v ) ;
00119 _info->end_tag( "lib" ) ;
00120 }
00121
00122 void
00123 BESVersionInfo::endHandlerVersion( )
00124 {
00125 if( !_inhandler )
00126 {
00127 throw BESHandlerException( "Attempting to end Handler version information while not in Handler tag", __FILE__, __LINE__ ) ;
00128 }
00129 _inhandler = true ;
00130 _info->end_tag( "Handlers" ) ;
00131 }
00132
00140 void
00141 BESVersionInfo::dump( ostream &strm ) const
00142 {
00143 strm << BESIndent::LMarg << "BESVersionInfo::dump - ("
00144 << (void *)this << ")" << endl ;
00145 BESIndent::Indent() ;
00146 strm << BESIndent::LMarg << "in BES version? " << _inbes << endl ;
00147 strm << BESIndent::LMarg << "in Handler version? " << _inhandler << endl ;
00148 if( _info )
00149 {
00150 strm << BESIndent::LMarg << "redirection info object:" << endl ;
00151 BESIndent::Indent() ;
00152 _info->dump( strm ) ;
00153 BESIndent::UnIndent() ;
00154 }
00155 else
00156 {
00157 strm << BESIndent::LMarg << "redirection info object: null" << endl ;
00158 }
00159 BESInfo::dump( strm ) ;
00160 BESIndent::UnIndent() ;
00161 }
00162