PackageDelta.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00012 #include <iostream>
00013 extern "C"
00014 {
00015 #include <satsolver/knownid.h>
00016 }
00017
00018 #include "zypp/base/LogTools.h"
00019
00020 #include "zypp/repo/PackageDelta.h"
00021 #include "zypp/sat/Pool.h"
00022
00023
00024 using std::endl;
00025 using std::string;
00026
00027
00029 namespace zypp
00030 {
00031
00032 namespace packagedelta
00033 {
00034
00035 DeltaRpm::DeltaRpm( sat::LookupAttr::iterator deltaInfo_r )
00036 {
00037 if ( deltaInfo_r.inSolvAttr() != sat::SolvAttr::repositoryDeltaInfo )
00038 {
00039 INT << "Illegal non-repositoryDeltaInfo iterator: " << deltaInfo_r << endl;
00040 return;
00041 }
00042 _repo = deltaInfo_r.inRepo();
00043
00044 IdString locdir;
00045 IdString locname;
00046 IdString locevr;
00047 IdString locsuffix;
00048
00049 IdString seqname;
00050 IdString seqevr;
00051 std::string seqnum;
00052
00053 for_( it, deltaInfo_r.subBegin(), deltaInfo_r.subEnd() )
00054 {
00055 switch ( it.inSolvAttr().id() )
00056 {
00057 case DELTA_PACKAGE_NAME:
00058 _name = it.asString();
00059 break;
00060
00061 case DELTA_PACKAGE_EVR:
00062 _edition = Edition( it.idStr() );
00063 break;
00064
00065 case DELTA_PACKAGE_ARCH:
00066 _arch = Arch( it.idStr() );
00067 break;
00068
00069 case DELTA_LOCATION_DIR:
00070 locdir = it.idStr();
00071 break;
00072
00073 case DELTA_LOCATION_NAME:
00074 locname = it.idStr();
00075 break;
00076
00077 case DELTA_LOCATION_EVR:
00078 locevr = it.idStr();
00079 break;
00080
00081 case DELTA_LOCATION_SUFFIX:
00082 locsuffix = it.idStr();
00083 break;
00084
00085 case DELTA_DOWNLOADSIZE:
00086 _location.setDownloadSize( ByteCount( it.asUnsigned(), ByteCount::K ) );
00087 break;
00088
00089 case DELTA_CHECKSUM:
00090 _location.setChecksum( it.asCheckSum() );
00091 break;
00092
00093 case DELTA_BASE_EVR:
00094 _baseversion.setEdition( Edition( it.idStr() ) );
00095 break;
00096
00097 case DELTA_SEQ_NAME:
00098 seqname = it.idStr();
00099 break;
00100
00101 case DELTA_SEQ_EVR:
00102 seqevr = it.idStr();
00103 break;
00104
00105 case DELTA_SEQ_NUM:
00106 seqnum = it.asString();
00107 break;
00108
00109 default:
00110 WAR << "Igore unknown attribute: " << it << endl;
00111 }
00112 }
00113
00114 _location.setLocation( str::form( "%s/%s-%s.%s",
00115 locdir.c_str(),
00116 locname.c_str(),
00117 locevr.c_str(),
00118 locsuffix.c_str() ) );
00119
00120 _baseversion.setSequenceinfo( str::form( "%s-%s-%s",
00121 seqname.c_str(),
00122 seqevr.c_str(),
00123 seqnum.c_str() ) );
00124 }
00125
00126 std::ostream & operator<<( std::ostream & str, const DeltaRpm & obj )
00127 {
00128 return str
00129 << "DeltaRpm[" << obj.name() << "-" << obj.edition() << "." << obj.arch()
00130 << "](" << obj.location()
00131 << '|' << obj.baseversion().edition()
00132 << ',' << obj.baseversion().sequenceinfo()
00133 << ')';
00134 }
00135
00137 }
00140 }