libzypp  16.15.6
MediaManager.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_MEDIA_MEDIAMANAGER_H
13 #define ZYPP_MEDIA_MEDIAMANAGER_H
14 
15 #include "zypp/media/MediaAccess.h"
16 
17 #include "zypp/APIConfig.h"
18 #include "zypp/base/NonCopyable.h"
19 #include "zypp/base/PtrTypes.h"
20 #include "zypp/Pathname.h"
21 #include "zypp/Url.h"
22 
23 #include <list>
24 
25 
27 namespace zypp
28 {
29 
31  namespace media
32  {
33 
34 
37 
38  // OBSOLETE HERE:
40  typedef unsigned int MediaNr;
41 
42 
44  // forward declaration
45  class MountEntry;
46  class MediaManager_Impl;
47 
49  //
50  // CLASS NAME : MediaVerifierBase
51  //
55  class MediaVerifierBase //: private zypp::NonCopyable
56  {
57  public:
59  {}
60 
61  virtual
63  {}
64 
69  virtual std::string
70  info() const;
71 
72  /*
73  ** Check if the specified attached media contains
74  ** the desired media (e.g. SLES10 CD1).
75  */
76  virtual bool
77  isDesiredMedia(const MediaAccessRef &ref) = 0;
78  };
79 
80 
82  //
83  // CLASS NAME : NoVerifier
84  //
89  {
90  public:
92  {}
93 
94  virtual
96  {}
97 
101  virtual std::string
102  info() const;
103 
104  /*
105  ** Don't check if the specified attached media contains
106  ** the desired media number. Always return true.
107  */
108  virtual bool
109  isDesiredMedia(const MediaAccessRef &ref)
110  {
111  (void)ref;
112  return true;
113  }
114  };
115 
116 
118  //
119  // CLASS NAME : MediaVerifierRef
120  //
125 
126 
128  //
129  // CLASS NAME : MediaManager
130  //
474  {
475  public:
487  MediaManager();
488 
493  ~MediaManager();
494 
516  open(const Url &url, const Pathname & preferred_attach_point = "");
517 
522  void
523  close(MediaAccessId accessId);
524 
531  bool
532  isOpen(MediaAccessId accessId) const;
533 
543  std::string
544  protocol(MediaAccessId accessId) const;
545 
551  bool
552  downloads(MediaAccessId accessId) const;
553 
561  Url
562  url(MediaAccessId accessId) const;
563 
564  public:
573  void
574  addVerifier(MediaAccessId accessId,
575  const MediaVerifierRef &verifier);
576 
584  void
585  delVerifier(MediaAccessId accessId);
586 
587  public:
600  bool
601  setAttachPrefix(const Pathname &attach_prefix);
602 
612  void
613  attach(MediaAccessId accessId);
614 
626  void
627  release(MediaAccessId accessId, const std::string & ejectDev = "");
628 
632  void
633  releaseAll();
634 
649  void
650  disconnect(MediaAccessId accessId);
651 
659  bool
660  isAttached(MediaAccessId accessId) const;
661 
670  bool
671  isSharedMedia(MediaAccessId accessId) const;
672 
682  bool
683  isDesiredMedia(MediaAccessId accessId) const;
684 
695  bool
696  isDesiredMedia(MediaAccessId accessId,
697  const MediaVerifierRef &verifier) const;
698 
710  bool
711  isChangeable(MediaAccessId accessId);
712 
725  Pathname
726  localRoot(MediaAccessId accessId) const;
727 
740  Pathname
741  localPath(MediaAccessId accessId, const Pathname & pathname) const;
742 
743  public:
762  void
763  provideFile(MediaAccessId accessId,
764  const Pathname &filename ) const;
765 
769  void
770  provideDir(MediaAccessId accessId,
771  const Pathname &dirname) const;
772 
776  void
777  provideDirTree(MediaAccessId accessId,
778  const Pathname &dirname) const;
779 
783  void
784  releaseFile(MediaAccessId accessId,
785  const Pathname &filename) const;
786 
790  void
791  releaseDir(MediaAccessId accessId,
792  const Pathname &dirname) const;
793 
797  void
798  releasePath(MediaAccessId accessId,
799  const Pathname &pathname) const;
800 
804  void
805  dirInfo(MediaAccessId accessId,
806  std::list<std::string> &retlist,
807  const Pathname &dirname,
808  bool dots = true) const;
809 
813  void
814  dirInfo(MediaAccessId accessId,
815  filesystem::DirContent &retlist,
816  const Pathname &dirname,
817  bool dots = true) const;
818 
822  bool doesFileExist(MediaAccessId accessId,
823  const Pathname & filename ) const;
824 
834  void
835  getDetectedDevices(MediaAccessId accessId,
836  std::vector<std::string> & devices,
837  unsigned int & index) const;
838 
839  void
840  setDeltafile(MediaAccessId accessId,
841  const Pathname &filename ) const;
842 
843  public:
848  static time_t
849  getMountTableMTime();
850 
855  static std::vector<MountEntry>
856  getMountEntries();
857 
867  bool
868  isUseableAttachPoint(const Pathname &path,
869  bool mtab=true) const;
870 
871  private:
872  friend class MediaHandler;
873 
884  getAttachedMedia(MediaAccessId &accessId) const;
885 
896  findAttachedMedia(const MediaSourceRef &media) const;
897 
906  void
907  forceReleaseShared(const MediaSourceRef &media);
908 
909  private:
914  };
915 
916 
918  } // namespace media
920 
922 } // namespace zypp
924 
925 #endif // ZYPP_MEDIA_MEDIAMANAGER_H
926 
927 /*
928 ** vim: set ts=2 sts=2 sw=2 ai et:
929 */
Dummy default media verifier, which is always happy.
Definition: MediaManager.h:88
zypp::RW_pointer< MediaVerifierBase > MediaVerifierRef
A shared reference to the MediaVerifier implementation.
Definition: MediaManager.h:124
MediaAccessId MediaId
Definition: MediaManager.h:39
Url url
Definition: MediaCurl.cc:196
Interface to implement a media verifier.
Definition: MediaManager.h:55
unsigned int MediaAccessId
Media manager access Id type.
Definition: MediaSource.h:29
static zypp::RW_pointer< MediaManager_Impl > m_impl
Static reference to the implementation (singleton).
Definition: MediaManager.h:913
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
Definition: NonCopyable.h:26
ManagedFile provideFile(RepoInfo repo_r, const OnMediaLocation &loc_r, const ProvideFilePolicy &policy_r)
Provide a file from a Repository.
Abstract base class for &#39;physical&#39; MediaHandler like MediaCD, etc.
Definition: MediaHandler.h:45
A simple structure containing references to a media source and its attach point.
Definition: MediaSource.h:133
Provides API related macros.
std::list< DirEntry > DirContent
Returned by readdir.
Definition: PathInfo.h:547
virtual bool isDesiredMedia(const MediaAccessRef &ref)=0
Manages access to the &#39;physical&#39; media, e.g CDROM drives, Disk volumes, directory trees...
Definition: MediaManager.h:473
MediaVerifierRef verifier
Wrapper for const correct access via Smart pointer types.
Definition: PtrTypes.h:285
A "struct mntent" like mount entry structure, but using std::strings.
Definition: Mount.h:34
virtual bool isDesiredMedia(const MediaAccessRef &ref)
Definition: MediaManager.h:109
virtual std::string info() const
Returns a string with some info about the verifier.
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1
zypp::RW_pointer< MediaAccess > MediaAccessRef
Definition: MediaManager.h:36
Url manipulation class.
Definition: Url.h:87
unsigned int MediaNr
Definition: MediaManager.h:40