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 "BESInternalError.h"
00040
00047 BESVersionInfo::BESVersionInfo()
00048 : BESInfo(),
00049 _inbes( false ),
00050 _inhandler( false ),
00051 _info( 0 )
00052 {
00053 _info = BESInfoList::TheList()->build_info() ;
00054 }
00055
00056 BESVersionInfo::~BESVersionInfo()
00057 {
00058 if( _info ) delete _info ;
00059 }
00060
00061 void
00062 BESVersionInfo::add_library( const string &name, const string &vers )
00063 {
00064 add_version( "library", name, vers ) ;
00065 }
00066
00067 void
00068 BESVersionInfo::add_module( const string &name, const string &vers )
00069 {
00070 add_version( "module", name, vers ) ;
00071 }
00072
00073 void
00074 BESVersionInfo::add_service( const string &name, const list<string> &vers )
00075 {
00076 map<string,string> props ;
00077 props["name"] = name ;
00078 begin_tag( "serviceVersion", &props ) ;
00079 list<string>::const_iterator i = vers.begin() ;
00080 list<string>::const_iterator e = vers.end() ;
00081 for( ; i != e; i++ )
00082 {
00083 add_tag( "version", (*i) ) ;
00084 }
00085 end_tag( "serviceVersion" ) ;
00086 }
00087
00088 void
00089 BESVersionInfo::add_version( const string &type,
00090 const string &name,
00091 const string &vers )
00092 {
00093 map<string,string> attrs ;
00094 attrs["name"] = name ;
00095 add_tag( type, vers, &attrs ) ;
00096 }
00097
00105 void
00106 BESVersionInfo::dump( ostream &strm ) const
00107 {
00108 strm << BESIndent::LMarg << "BESVersionInfo::dump - ("
00109 << (void *)this << ")" << endl ;
00110 BESIndent::Indent() ;
00111 strm << BESIndent::LMarg << "in BES version? " << _inbes << endl ;
00112 strm << BESIndent::LMarg << "in Handler version? " << _inhandler << endl ;
00113 if( _info )
00114 {
00115 strm << BESIndent::LMarg << "redirection info object:" << endl ;
00116 BESIndent::Indent() ;
00117 _info->dump( strm ) ;
00118 BESIndent::UnIndent() ;
00119 }
00120 else
00121 {
00122 strm << BESIndent::LMarg << "redirection info object: null" << endl ;
00123 }
00124 BESInfo::dump( strm ) ;
00125 BESIndent::UnIndent() ;
00126 }
00127