libzypp  17.23.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  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 */
zypp::media::MediaManager::releaseFile
void releaseFile(MediaAccessId accessId, const Pathname &filename) const
FIXME: see MediaAccess class.
Definition: MediaManager.cc:685
zypp::media::MediaNr
unsigned int MediaNr
Definition: MediaManager.h:40
zypp::media::MediaManager::disconnect
void disconnect(MediaAccessId accessId)
Disconnect a remote media.
Definition: MediaManager.cc:517
zypp::media::MediaManager_Impl
Definition: MediaManager.cc:133
zypp::media::MediaManager::isAttached
bool isAttached(MediaAccessId accessId) const
Check if media is attached or not.
Definition: MediaManager.cc:526
zypp::media::MediaManager::releaseAll
void releaseAll()
Release all attached media.
Definition: MediaManager.cc:482
zypp::media::MediaManager::m_impl
static zypp::RW_pointer< MediaManager_Impl > m_impl
Static reference to the implementation (singleton).
Definition: MediaManager.h:916
zypp::media::MediaVerifierRef
zypp::RW_pointer< MediaVerifierBase > MediaVerifierRef
A shared reference to the MediaVerifier implementation.
Definition: MediaManager.h:124
zypp::media::MediaId
MediaAccessId MediaId
Definition: MediaManager.h:39
zypp::media::MediaManager::~MediaManager
~MediaManager()
Destroys MediaManager envelope instance.
Definition: MediaManager.cc:239
zypp::media::NoVerifier::isDesiredMedia
virtual bool isDesiredMedia(const MediaAccessRef &ref)
Definition: MediaManager.h:109
zypp::media::MediaHandler
Abstract base class for 'physical' MediaHandler like MediaCD, etc.
Definition: MediaHandler.h:45
zypp::media::MediaVerifierBase::info
virtual std::string info() const
Returns a string with some info about the verifier.
Definition: MediaManager.cc:118
PtrTypes.h
zypp::media::MediaVerifierBase
Interface to implement a media verifier.
Definition: MediaManager.h:55
zypp::media::MediaManager::releaseDir
void releaseDir(MediaAccessId accessId, const Pathname &dirname) const
FIXME: see MediaAccess class.
Definition: MediaManager.cc:697
zypp::media::MediaManager::attach
void attach(MediaAccessId accessId)
Attach the media using the concrete handler (checks all devices).
Definition: MediaManager.cc:372
Pathname.h
zypp::media::MediaManager::url
Url url(MediaAccessId accessId) const
Returns the Media Access Url of the media access id.
Definition: MediaManager.cc:326
zypp::media::MediaManager::delVerifier
void delVerifier(MediaAccessId accessId)
Remove verifier for specified media id.
Definition: MediaManager.cc:352
zypp::media::MediaManager::isUseableAttachPoint
bool isUseableAttachPoint(const Pathname &path, bool mtab=true) const
Check if the specified path is useable as attach point.
Definition: MediaManager.cc:790
zypp::media::MediaManager::setDeltafile
void setDeltafile(MediaAccessId accessId, const Pathname &filename) const
Definition: MediaManager.cc:649
zypp::media::NoVerifier::NoVerifier
NoVerifier()
Definition: MediaManager.h:91
zypp::ByteCount
Store and operate with byte count.
Definition: ByteCount.h:30
zypp::media::MediaVerifierBase::~MediaVerifierBase
virtual ~MediaVerifierBase()
Definition: MediaManager.h:62
zypp::media::NoVerifier
Dummy default media verifier, which is always happy.
Definition: MediaManager.h:88
zypp::media::NoVerifier::~NoVerifier
virtual ~NoVerifier()
Definition: MediaManager.h:95
zypp::media::MediaAccessId
unsigned int MediaAccessId
Media manager access Id type.
Definition: MediaSource.h:29
zypp::media::MediaManager::MediaManager
MediaManager()
Creates a MediaManager envelope instance.
Definition: MediaManager.cc:230
zypp::media::MediaVerifierBase::MediaVerifierBase
MediaVerifierBase()
Definition: MediaManager.h:58
zypp::media::MediaManager::provideDirTree
void provideDirTree(MediaAccessId accessId, const Pathname &dirname) const
FIXME: see MediaAccess class.
Definition: MediaManager.cc:673
zypp::RW_pointer
Wrapper for const correct access via Smart pointer types.
Definition: PtrTypes.h:285
Url.h
zypp::media::MediaManager::isOpen
bool isOpen(MediaAccessId accessId) const
Query if the media access is open / exists.
Definition: MediaManager.cc:299
zypp::base::NonCopyable
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
Definition: NonCopyable.h:26
zypp::media::MediaManager
Manages access to the 'physical' media, e.g CDROM drives, Disk volumes, directory trees,...
Definition: MediaManager.h:470
zypp::media::AttachedMedia
A simple structure containing references to a media source and its attach point.
Definition: MediaSource.h:133
zypp::media::MediaManager::localRoot
Pathname localRoot(MediaAccessId accessId) const
Return the local directory that corresponds to medias url, no matter if media isAttached or not.
Definition: MediaManager.cc:606
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1
zypp::media::MediaManager::open
MediaAccessId open(const Url &url, const Pathname &preferred_attach_point="")
Opens the media access for specified with the url.
Definition: MediaManager.cc:245
zypp::filesystem::DirContent
std::list< DirEntry > DirContent
Returned by readdir.
Definition: PathInfo.h:547
zypp::media::MediaManager::provideDir
void provideDir(MediaAccessId accessId, const Pathname &dirname) const
FIXME: see MediaAccess class.
Definition: MediaManager.cc:661
zypp::media::MediaManager::setAttachPrefix
bool setAttachPrefix(const Pathname &attach_prefix)
Set or resets the directory name, where the media manager handlers create their temporary attach poin...
Definition: MediaManager.cc:366
zypp::media::MediaManager::localPath
Pathname localPath(MediaAccessId accessId, const Pathname &pathname) const
Shortcut for 'localRoot() + pathname', but returns an empty pathname if media is not attached.
Definition: MediaManager.cc:617
zypp::media::MediaManager::findAttachedMedia
AttachedMedia findAttachedMedia(const MediaSourceRef &media) const
Definition: MediaManager.cc:868
MediaAccess.h
zypp::media::MediaManager::getMountTableMTime
static time_t getMountTableMTime()
Get the modification time of the /etc/mtab file.
Definition: MediaManager.cc:775
zypp::media::MediaManager::downloads
bool downloads(MediaAccessId accessId) const
Hint if files are downloaded or not.
Definition: MediaManager.cc:317
zypp::media::MediaManager::close
void close(MediaAccessId accessId)
Close the media access with specified id.
Definition: MediaManager.cc:265
zypp::media::MediaManager::addVerifier
void addVerifier(MediaAccessId accessId, const MediaVerifierRef &verifier)
Add verifier implementation for the specified media id.
Definition: MediaManager.cc:335
zypp::media::MediaVerifierBase::isDesiredMedia
virtual bool isDesiredMedia(const MediaAccessRef &ref)=0
zypp::media::MediaManager::getMountEntries
static std::vector< MountEntry > getMountEntries()
Get current mount entries from /etc/mtab file.
Definition: MediaManager.cc:783
zypp::media::MediaManager::isDesiredMedia
bool isDesiredMedia(MediaAccessId accessId) const
Ask the registered verifier if the attached media is the desired one or not.
Definition: MediaManager.cc:543
zypp::media::MediaManager::doesFileExist
bool doesFileExist(MediaAccessId accessId, const Pathname &filename) const
FIXME: see MediaAccess class.
Definition: MediaManager.cc:752
zypp::media::MediaManager::release
void release(MediaAccessId accessId, const std::string &ejectDev="")
Release the attached media and optionally eject.
Definition: MediaManager.cc:440
zypp::media::MediaManager::getAttachedMedia
AttachedMedia getAttachedMedia(MediaAccessId &accessId) const
Definition: MediaManager.cc:859
zypp::media::MountEntry
A "struct mntent" like mount entry structure, but using std::strings.
Definition: Mount.h:34
zypp::filesystem::Pathname
Pathname.
Definition: Pathname.h:44
zypp::media::MediaManager::dirInfo
void dirInfo(MediaAccessId accessId, std::list< std::string > &retlist, const Pathname &dirname, bool dots=true) const
FIXME: see MediaAccess class.
Definition: MediaManager.cc:722
zypp::media::NoVerifier::info
virtual std::string info() const
Returns the "zypp::media::NoVerifier" string.
Definition: MediaManager.cc:126
verifier
MediaVerifierRef verifier
Definition: MediaManager.cc:104
zypp::media::MediaManager::getDetectedDevices
void getDetectedDevices(MediaAccessId accessId, std::vector< std::string > &devices, unsigned int &index) const
Fill in a vector of detected ejectable devices and the index of the currently attached device within ...
Definition: MediaManager.cc:764
zypp::media::MediaManager::isSharedMedia
bool isSharedMedia(MediaAccessId accessId) const
Returns information if media is on a shared physical device or not.
Definition: MediaManager.cc:534
zypp::Url
Url manipulation class.
Definition: Url.h:87
zypp::media::MediaAccessRef
zypp::RW_pointer< MediaAccess > MediaAccessRef
Definition: MediaManager.h:36
zypp::media::MediaManager::provideFile
void provideFile(MediaAccessId accessId, const Pathname &filename, const ByteCount &expectedFileSize) const
Provide provide file denoted by relative path below of the 'attach point' of the specified media and ...
Definition: MediaManager.cc:628
zypp::media::MediaManager::protocol
std::string protocol(MediaAccessId accessId) const
Query the protocol name used by the media access handler.
Definition: MediaManager.cc:308
zypp::media::MediaManager::isChangeable
bool isChangeable(MediaAccessId accessId)
Simple check, based on media's URL scheme, telling whether the it is possible to physically change th...
Definition: MediaManager.cc:599
zypp::media::MediaManager::forceReleaseShared
void forceReleaseShared(const MediaSourceRef &media)
Definition: MediaManager.cc:888
NonCopyable.h
zypp::media::MediaManager::releasePath
void releasePath(MediaAccessId accessId, const Pathname &pathname) const
FIXME: see MediaAccess class.
Definition: MediaManager.cc:710