libzypp 8.13.6
|
00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00012 #ifndef ZYPP_MEDIA_MEDIACD_H 00013 #define ZYPP_MEDIA_MEDIACD_H 00014 00015 #include "zypp/media/MediaHandler.h" 00016 #include "zypp/media/MediaManager.h" 00017 00018 namespace zypp { 00019 namespace media { 00020 00022 // 00023 // CLASS NAME : MediaCD 00028 class MediaCD : public MediaHandler { 00029 00030 private: 00031 00032 typedef std::list<MediaSource> DeviceList; 00034 DeviceList _devices; 00035 00037 int _lastdev; 00038 int _lastdev_tried; 00039 00040 static bool openTray( const std::string & device_r ); 00041 static bool closeTray( const std::string & device_r ); 00042 00043 DeviceList detectDevices(bool supportingDVD) const; 00044 00045 protected: 00046 00047 virtual void attachTo (bool next = false); 00048 virtual void releaseFrom( const std::string & ejectDev ); 00049 virtual void getFile( const Pathname & filename ) const; 00050 virtual void getDir( const Pathname & dirname, bool recurse_r ) const; 00051 virtual void getDirInfo( std::list<std::string> & retlist, 00052 const Pathname & dirname, bool dots = true ) const; 00053 virtual void getDirInfo( filesystem::DirContent & retlist, 00054 const Pathname & dirname, bool dots = true ) const; 00055 virtual bool getDoesFileExist( const Pathname & filename ) const; 00056 00057 virtual void forceEject(const std::string & ejectDev); 00058 00059 virtual bool hasMoreDevices(); 00060 00061 virtual void 00062 getDetectedDevices(std::vector<std::string> & devices, 00063 unsigned int & index) const; 00064 00065 public: 00066 00067 MediaCD( const Url & url_r, 00068 const Pathname & attach_point_hint_r ); 00069 00070 virtual ~MediaCD() { try { release(); } catch(...) {} } 00071 00072 virtual bool isAttached() const; 00073 }; 00074 00076 } // namespace media 00077 } // namespace zypp 00078 #endif // ZYPP_MEDIA_MEDIACD_H