libzypp  17.14.0
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  struct 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  //
471  {
472  public:
484  MediaManager();
485 
490  ~MediaManager();
491 
513  open(const Url &url, const Pathname & preferred_attach_point = "");
514 
519  void
520  close(MediaAccessId accessId);
521 
528  bool
529  isOpen(MediaAccessId accessId) const;
530 
540  std::string
541  protocol(MediaAccessId accessId) const;
542 
548  bool
549  downloads(MediaAccessId accessId) const;
550 
558  Url
559  url(MediaAccessId accessId) const;
560 
561  public:
570  void
571  addVerifier(MediaAccessId accessId,
572  const MediaVerifierRef &verifier);
573 
581  void
582  delVerifier(MediaAccessId accessId);
583 
584  public:
597  bool
598  setAttachPrefix(const Pathname &attach_prefix);
599 
609  void
610  attach(MediaAccessId accessId);
611 
623  void
624  release(MediaAccessId accessId, const std::string & ejectDev = "");
625 
629  void
630  releaseAll();
631 
646  void
647  disconnect(MediaAccessId accessId);
648 
656  bool
657  isAttached(MediaAccessId accessId) const;
658 
667  bool
668  isSharedMedia(MediaAccessId accessId) const;
669 
679  bool
680  isDesiredMedia(MediaAccessId accessId) const;
681 
692  bool
693  isDesiredMedia(MediaAccessId accessId,
694  const MediaVerifierRef &verifier) const;
695 
707  bool
708  isChangeable(MediaAccessId accessId);
709 
722  Pathname
723  localRoot(MediaAccessId accessId) const;
724 
737  Pathname
738  localPath(MediaAccessId accessId, const Pathname & pathname) const;
739 
740  public:
760  void
761  provideFile(MediaAccessId accessId,
762  const Pathname &filename,
763  const ByteCount &expectedFileSize) const;
764 
765  void
766  provideFile(MediaAccessId accessId,
767  const Pathname &filename ) const;
768 
772  void
773  provideDir(MediaAccessId accessId,
774  const Pathname &dirname) const;
775 
779  void
780  provideDirTree(MediaAccessId accessId,
781  const Pathname &dirname) const;
782 
786  void
787  releaseFile(MediaAccessId accessId,
788  const Pathname &filename) const;
789 
793  void
794  releaseDir(MediaAccessId accessId,
795  const Pathname &dirname) const;
796 
800  void
801  releasePath(MediaAccessId accessId,
802  const Pathname &pathname) const;
803 
807  void
808  dirInfo(MediaAccessId accessId,
809  std::list<std::string> &retlist,
810  const Pathname &dirname,
811  bool dots = true) const;
812 
816  void
817  dirInfo(MediaAccessId accessId,
818  filesystem::DirContent &retlist,
819  const Pathname &dirname,
820  bool dots = true) const;
821 
825  bool doesFileExist(MediaAccessId accessId,
826  const Pathname & filename ) const;
827 
837  void
839  std::vector<std::string> & devices,
840  unsigned int & index) const;
841 
842  void
843  setDeltafile(MediaAccessId accessId,
844  const Pathname &filename ) const;
845 
846  public:
851  static time_t
853 
858  static std::vector<MountEntry>
859  getMountEntries();
860 
870  bool
871  isUseableAttachPoint(const Pathname &path,
872  bool mtab=true) const;
873 
874  private:
875  friend class MediaHandler;
876 
887  getAttachedMedia(MediaAccessId &accessId) const;
888 
899  findAttachedMedia(const MediaSourceRef &media) const;
900 
909  void
910  forceReleaseShared(const MediaSourceRef &media);
911 
912  private:
917  };
918 
919 
921  } // namespace media
923 
925 } // namespace zypp
927 
928 #endif // ZYPP_MEDIA_MEDIAMANAGER_H
929 
930 /*
931 ** vim: set ts=2 sts=2 sw=2 ai et:
932 */