libzypp  12.16.5
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
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  //
472  {
473  public:
485  MediaManager();
486 
491  ~MediaManager();
492 
514  open(const Url &url, const Pathname & preferred_attach_point = "");
515 
520  void
521  close(MediaAccessId accessId);
522 
529  bool
530  isOpen(MediaAccessId accessId) const;
531 
541  std::string
542  protocol(MediaAccessId accessId) const;
543 
549  bool
550  downloads(MediaAccessId accessId) const;
551 
553  static
554  ZYPP_DEPRECATED bool downloads(const Url &url)
555  { return url.schemeIsDownloading(); }
556 
564  Url
565  url(MediaAccessId accessId) const;
566 
567  public:
576  void
577  addVerifier(MediaAccessId accessId,
578  const MediaVerifierRef &verifier);
579 
587  void
588  delVerifier(MediaAccessId accessId);
589 
590  public:
603  bool
604  setAttachPrefix(const Pathname &attach_prefix);
605 
615  void
616  attach(MediaAccessId accessId);
617 
620  { attach( accessId ); }
621 
633  void
634  release(MediaAccessId accessId, const std::string & ejectDev = "");
635 
639  void
640  releaseAll();
641 
656  void
657  disconnect(MediaAccessId accessId);
658 
666  bool
667  isAttached(MediaAccessId accessId) const;
668 
677  bool
678  isSharedMedia(MediaAccessId accessId) const;
679 
689  bool
690  isDesiredMedia(MediaAccessId accessId) const;
691 
702  bool
703  isDesiredMedia(MediaAccessId accessId,
704  const MediaVerifierRef &verifier) const;
705 
717  bool
718  isChangeable(MediaAccessId accessId);
719 
732  Pathname
733  localRoot(MediaAccessId accessId) const;
734 
747  Pathname
748  localPath(MediaAccessId accessId, const Pathname & pathname) const;
749 
750  public:
769  void
770  provideFile(MediaAccessId accessId,
771  const Pathname &filename ) const;
772 
776  void
777  provideDir(MediaAccessId accessId,
778  const Pathname &dirname) const;
779 
783  void
784  provideDirTree(MediaAccessId accessId,
785  const Pathname &dirname) const;
786 
790  void
791  releaseFile(MediaAccessId accessId,
792  const Pathname &filename) const;
793 
797  void
798  releaseDir(MediaAccessId accessId,
799  const Pathname &dirname) const;
800 
804  void
805  releasePath(MediaAccessId accessId,
806  const Pathname &pathname) const;
807 
811  void
812  dirInfo(MediaAccessId accessId,
813  std::list<std::string> &retlist,
814  const Pathname &dirname,
815  bool dots = true) const;
816 
820  void
821  dirInfo(MediaAccessId accessId,
822  filesystem::DirContent &retlist,
823  const Pathname &dirname,
824  bool dots = true) const;
825 
829  bool doesFileExist(MediaAccessId accessId,
830  const Pathname & filename ) const;
831 
841  void
843  std::vector<std::string> & devices,
844  unsigned int & index) const;
845 
846  void
847  setDeltafile(MediaAccessId accessId,
848  const Pathname &filename ) const;
849 
850  public:
855  static time_t
857 
862  static std::vector<MountEntry>
863  getMountEntries();
864 
874  bool
875  isUseableAttachPoint(const Pathname &path,
876  bool mtab=true) const;
877 
878  private:
879  friend class MediaHandler;
880 
891  getAttachedMedia(MediaAccessId &accessId) const;
892 
903  findAttachedMedia(const MediaSourceRef &media) const;
904 
913  void
914  forceReleaseShared(const MediaSourceRef &media);
915 
916  private:
921  };
922 
923 
925  } // namespace media
927 
929 } // namespace zypp
931 
932 #endif // ZYPP_MEDIA_MEDIAMANAGER_H
933 
934 /*
935 ** vim: set ts=2 sts=2 sw=2 ai et:
936 */