libzypp  17.14.0
MediaSetAccess.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
9 
10 #ifndef ZYPP_MediaSetAccess_H
11 #define ZYPP_MediaSetAccess_H
12 
13 #include <iosfwd>
14 #include <string>
15 #include <vector>
16 #include "zypp/base/Function.h"
17 
19 #include "zypp/base/NonCopyable.h"
20 #include "zypp/base/Flags.h"
21 #include "zypp/base/PtrTypes.h"
23 #include "zypp/Pathname.h"
24 #include "zypp/CheckSum.h"
25 #include "zypp/OnMediaLocation.h"
26 #include "zypp/ManagedFile.h"
27 
29 namespace zypp
30 {
31 
32  DEFINE_PTR_TYPE(MediaSetAccess);
33 
35  //
36  // CLASS NAME : MediaSetAccess
37  //
81  {
82  friend std::ostream & operator<<( std::ostream & str, const MediaSetAccess & obj );
83 
84  public:
92  MediaSetAccess( const Url &url, const Pathname & prefered_attach_point = "" );
94  MediaSetAccess( const std::string & label_r, const Url &url, const Pathname & prefered_attach_point = "" );
96 
100  void setVerifier( unsigned media_nr, media::MediaVerifierRef verifier );
101 
105  const std::string & label() const
106  { return _label; }
107 
111  void setLabel( const std::string & label_r )
112  { _label = label_r; }
113 
115  {
121  };
122  ZYPP_DECLARE_FLAGS(ProvideFileOptions,ProvideFileOption);
123 
151  Pathname provideFile( const OnMediaLocation & resource, ProvideFileOptions options = PROVIDE_DEFAULT, const Pathname &deltafile = Pathname() );
152 
173  Pathname provideFile(const Pathname & file, unsigned media_nr = 1, ProvideFileOptions options = PROVIDE_DEFAULT );
174 
182  Pathname provideOptionalFile( const Pathname & file, unsigned media_nr = 1 );
183 
201  static ManagedFile provideFileFromUrl( const Url & file_url, ProvideFileOptions options = PROVIDE_DEFAULT );
202 
210  static ManagedFile provideOptionalFileFromUrl( const Url & file_url );
211 
218  void releaseFile( const OnMediaLocation &resource );
219 
220 
228  void releaseFile(const Pathname & file, unsigned media_nr = 1 );
229 
246  {
249  ReleaseFileGuard( MediaSetAccess & media_r, const OnMediaLocation & loc_r )
250  : _media( media_r )
251  , _loc( loc_r )
252  {}
254  { _media.releaseFile( _loc ); }
255  private:
258  };
259 
277  Pathname provideDir(const Pathname & dir, bool recursive, unsigned media_nr = 1, ProvideFileOptions options = PROVIDE_DEFAULT );
278 
293  bool doesFileExist(const Pathname & file, unsigned media_nr = 1 );
294 
298  void dirInfo( filesystem::DirContent &retlist, const Pathname &dirname,
299  bool dots = true, unsigned media_nr = 1 );
300 
306  void release();
307 
322  static Url rewriteUrl (const Url & url_r, const media::MediaNr medianr);
323 
324  protected:
340  Pathname provideFileInternal( const OnMediaLocation &resource, ProvideFileOptions options );
341 
342  typedef function<void( media::MediaAccessId, const Pathname & )> ProvideOperation;
343 
344  void provide( ProvideOperation op, const OnMediaLocation &resource, ProvideFileOptions options, const Pathname &deltafile );
345 
347  virtual std::ostream & dumpOn( std::ostream & str ) const;
348 
349  private:
352 
360 
361  std::string _label;
362 
363  typedef std::map<media::MediaNr, media::MediaAccessId> MediaMap;
364  typedef std::map<media::MediaNr, media::MediaVerifierRef > VerifierMap;
365 
370  };
372  ZYPP_DECLARE_OPERATORS_FOR_FLAGS(MediaSetAccess::ProvideFileOptions);
373 
375  inline std::ostream & operator<<( std::ostream & str, const MediaSetAccess & obj )
376  { return obj.dumpOn( str ); }
377 
378 
379 } // namespace zypp
381 #endif // ZYPP_SOURCE_MediaSetAccess_H