00001
00002
00003
00004
00005
00006
00007
00008
00012 #ifndef ZYPP_SOURCE_PACKAGEDELTA_H
00013 #define ZYPP_SOURCE_PACKAGEDELTA_H
00014
00015 #include <iosfwd>
00016 #include <list>
00017
00018 #include "zypp/Date.h"
00019 #include "zypp/ByteCount.h"
00020 #include "zypp/Arch.h"
00021 #include "zypp/Edition.h"
00022 #include "zypp/CheckSum.h"
00023 #include "zypp/Pathname.h"
00024
00026 namespace zypp
00027 {
00028
00029 namespace packagedelta
00030 {
00031
00033
00034 class BaseVersion
00035 {
00036 public:
00037 BaseVersion( const Edition & edition,
00038 const CheckSum & checksum,
00039 const Date & buildtime )
00040 : _edition( edition )
00041 , _checksum( checksum )
00042 , _buildtime( buildtime )
00043 {}
00044
00045 Edition edition() const
00046 { return _edition; }
00047
00048 CheckSum checksum() const
00049 { return _checksum; }
00050
00051 Date buildtime() const
00052 { return _buildtime; }
00053
00054 private:
00055 Edition _edition;
00056 CheckSum _checksum;
00057 Date _buildtime;
00058 };
00059
00061 std::ostream & operator<<( std::ostream & str, const BaseVersion & obj );
00062
00064 inline bool operator==( const BaseVersion & lhs, const BaseVersion & rhs )
00065 { return lhs.edition() == rhs.edition(); }
00066
00068 inline bool operator!=( const BaseVersion & lhs, const BaseVersion & rhs )
00069 { return ! (lhs == rhs); }
00070
00072
00074 namespace detail
00075 {
00076
00077
00078
00080 }
00082
00083
00085
00086 class PatchRpm
00087 {
00088 public:
00089 PatchRpm( const Arch & arch,
00090 const Pathname & filename,
00091 const ByteCount & downloadsize,
00092 const CheckSum & checksum,
00093 const Date & buildtime,
00094 const std::list<BaseVersion> & base_versions,
00095 const unsigned media_nr )
00096 : _arch( arch)
00097 , _filename( filename )
00098 , _downloadsize( downloadsize )
00099 , _checksum( checksum )
00100 , _buildtime( buildtime )
00101 , _base_versions( base_versions )
00102 , _media_nr( media_nr )
00103 {}
00104
00105 Arch arch() const
00106 { return _arch; }
00107
00108 Pathname filename() const
00109 { return _filename; }
00110
00111 ByteCount downloadsize() const
00112 { return _downloadsize; }
00113
00114 CheckSum checksum() const
00115 { return _checksum; }
00116
00117 Date buildtime() const
00118 { return _buildtime; }
00119
00120 const std::list<BaseVersion> & baseVersions() const
00121 { return _base_versions; }
00122
00123 unsigned mediaNr() const
00124 { return _media_nr; }
00125
00126 private:
00127 Arch _arch;
00128 Pathname _filename;
00129 ByteCount _downloadsize;
00130 CheckSum _checksum;
00131 Date _buildtime;
00132 std::list<BaseVersion> _base_versions;
00133 unsigned _media_nr;
00134 };
00135
00137 std::ostream & operator<<( std::ostream & str, const PatchRpm & obj );
00138
00140
00141
00142 class DeltaRpm
00143 {
00144 public:
00145 DeltaRpm( const Arch & arch,
00146 const Pathname & filename,
00147 const ByteCount & downloadsize,
00148 const CheckSum & checksum,
00149 const Date & buildtime,
00150 const BaseVersion & base_version,
00151 const unsigned media_nr )
00152 : _arch( arch)
00153 , _filename( filename )
00154 , _downloadsize( downloadsize )
00155 , _checksum( checksum )
00156 , _buildtime( buildtime )
00157 , _base_version( base_version )
00158 , _media_nr( media_nr )
00159 {}
00160
00161 Arch arch() const
00162 { return _arch; }
00163
00164 Pathname filename() const
00165 { return _filename; }
00166
00167 ByteCount downloadsize() const
00168 { return _downloadsize; }
00169
00170 CheckSum checksum() const
00171 { return _checksum; }
00172
00173 Date buildtime() const
00174 { return _buildtime; }
00175
00176 BaseVersion baseVersion() const
00177 { return _base_version; }
00178
00179 unsigned mediaNr() const
00180 { return _media_nr; }
00181
00182 private:
00183 Arch _arch;
00184 Pathname _filename;
00185 ByteCount _downloadsize;
00186 CheckSum _checksum;
00187 Date _buildtime;
00188 BaseVersion _base_version;
00189 unsigned _media_nr;
00190 };
00191
00193 std::ostream & operator<<( std::ostream & str, const DeltaRpm & obj );
00194
00196
00198 }
00201 }
00203 #endif // ZYPP_SOURCE_PACKAGEDELTA_H