1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/source/OnMediaLocation.h
12 #ifndef ZYPP_SOURCE_ONMEDIALOCATION_H
13 #define ZYPP_SOURCE_ONMEDIALOCATION_H
17 #include "zypp/APIConfig.h"
18 #include "zypp/Pathname.h"
19 #include "zypp/ByteCount.h"
20 #include "zypp/CheckSum.h"
22 ///////////////////////////////////////////////////////////////////
24 { /////////////////////////////////////////////////////////////////
26 ///////////////////////////////////////////////////////////////////
28 // CLASS NAME : OnMediaLocation
31 * Describes a path on a certain media amongs as the information
32 * required to download it, like its media number, checksum and
33 * size. It does not specify the URI of the file.
35 * Media number \c 0 usually indicates no media access.
37 * \todo Implement cheap copy via COW.
41 friend std::ostream & operator<<( std::ostream & str, const OnMediaLocation & obj );
44 /** Default ctor indicating no media access. */
50 /** Ctor taking a filename and media number (defaults to 1). */
51 OnMediaLocation( const Pathname & filename_r, unsigned medianr_r = 1 )
52 : _medianr( medianr_r )
53 , _filename( filename_r )
54 , _optional(false) // bnc #447010
59 * media number where the resource is located.
60 * for a url cd:// this could be 1..N.
61 * for a url of type http://host/path/CD1, a media number 2
62 * means looking on http://host/path/CD1/../CD2
64 unsigned medianr() const { return _medianr; }
66 * The path to the resource relatve to the url and path.
67 * If the base is http://novell.com/download/repository, the
68 * resource filename could be "/repodata/repomd.xml"
70 const Pathname & filename() const { return _filename; }
72 * the checksum of the resource
74 const CheckSum & checksum() const { return _checksum; }
76 * The size of the resource on the server. Therefore
77 * the size of the download.
79 const ByteCount & downloadSize() const { return _downloadsize; }
81 * The size of the resource once it has been uncompressed
83 * If the file is file.txt.gz then this is the size of
86 const ByteCount & openSize() const { return _opendownloadsize; }
88 * The checksum of the resource once it has been uncompressed
90 * If the file is file.txt.gz then this is the checksum of
93 const CheckSum & openChecksum() const { return _openchecksum; }
95 * whether this is an optional resource. That is a file that
96 * may not be present. This is just a hint to the resource
97 * downloader to not error in case the not found resource is
100 const bool optional() const { return _optional; }
103 /** Unset \c filename and set \c medianr to \c 0. */
104 OnMediaLocation & unsetLocation()
105 { _filename = Pathname(); _medianr = 0; return *this; }
107 /** Set filename and media number (defaults to \c 1). */
108 OnMediaLocation & setLocation( const Pathname & val_r,
109 unsigned mediaNumber_r = 1 )
110 { _filename = val_r; _medianr = mediaNumber_r; return *this; }
112 /** Set the files size. */
113 OnMediaLocation & setDownloadSize( const ByteCount & val_r )
114 { _downloadsize = val_r; return *this; }
116 /** Set the files checksum. */
117 OnMediaLocation & setChecksum( const CheckSum & val_r )
118 { _checksum = val_r; return *this; }
120 /** Set the files open (uncompressed) size. */
121 OnMediaLocation & setOpenSize( const ByteCount & val_r )
122 { _opendownloadsize = val_r; return *this; }
124 /** Set the files open (uncompressed) checksum. */
125 OnMediaLocation & setOpenChecksum( const CheckSum & val_r )
126 { _openchecksum = val_r; return *this; }
129 * Set the whether the resource is optional or not
132 OnMediaLocation & setOptional( bool val )
133 { _optional = val; return *this; }
137 * Individual manipulation of \c medianr (prefer \ref setLocation).
138 * Using \ref setLocation is prefered as us usually have to adjust
139 * \c filename and \c medianr in sync.
141 OnMediaLocation & changeMedianr( unsigned val_r )
142 { _medianr = val_r; return *this; }
145 * Individual manipulation of \c filename (prefer \ref setLocation).
146 * Using \ref setLocation is preferedas us usually have to adjust
147 * \c filename and \c medianr in sync.
149 OnMediaLocation & changeFilename( const Pathname & val_r )
150 { _filename = val_r; return *this; }
156 ByteCount _downloadsize;
157 ByteCount _opendownloadsize;
158 CheckSum _openchecksum;
161 ///////////////////////////////////////////////////////////////////
163 /** \relates OnMediaLocation Stream output */
164 std::ostream & operator<<( std::ostream & str, const OnMediaLocation & obj );
166 /////////////////////////////////////////////////////////////////
168 ///////////////////////////////////////////////////////////////////
169 #endif // ZYPP_SOURCE_ONMEDIALOCATION_H