zypp::media::MediaCD Class Reference

Implementation class for CD/DVD MediaHandler. More...

#include <MediaCD.h>

Inheritance diagram for zypp::media::MediaCD:
[legend]

List of all members.

Public Member Functions

 MediaCD (const Url &url_r, const Pathname &attach_point_hint_r)
virtual ~MediaCD ()
virtual bool isAttached () const
 True if media is attached.

Protected Member Functions

virtual void attachTo (bool next=false)
 Call concrete handler to attach the media.
virtual void releaseFrom (const std::string &ejectDev)
 Call concrete handler to release the media.
virtual void getFile (const Pathname &filename) const
 Call concrete handler to provide file below attach point.
virtual void getDir (const Pathname &dirname, bool recurse_r) const
 Call concrete handler to provide directory content (not recursive!) below attach point.
virtual void getDirInfo (std::list< std::string > &retlist, const Pathname &dirname, bool dots=true) const
 Call concrete handler to provide a content list of directory on media via retlist.
virtual void getDirInfo (filesystem::DirContent &retlist, const Pathname &dirname, bool dots=true) const
 Basically the same as getDirInfo above.
virtual bool getDoesFileExist (const Pathname &filename) const
 check if a file exists
virtual void forceEject (const std::string &ejectDev)
 Call concrete handler to physically eject the media (i.e.
virtual bool isAutoMountedMedia (const AttachedMedia &media)
virtual bool hasMoreDevices ()
 Check if the media has one more device available for attach(true).
virtual void getDetectedDevices (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 the vector.

Private Types

typedef std::list< MediaSourceDeviceList

Private Member Functions

DeviceList detectDevices (bool supportingDVD) const

Static Private Member Functions

static bool openTray (const std::string &device_r)
static bool closeTray (const std::string &device_r)

Private Attributes

DeviceList _devices
 list of devices to try to mount
int _lastdev
 number of last successful mounted device in list
int _lastdev_tried


Detailed Description

Implementation class for CD/DVD MediaHandler.

See also:
MediaHandler

Definition at line 28 of file MediaCD.h.


Member Typedef Documentation

typedef std::list<MediaSource> zypp::media::MediaCD::DeviceList [private]

Definition at line 32 of file MediaCD.h.


Constructor & Destructor Documentation

zypp::media::MediaCD::MediaCD ( const Url url_r,
const Pathname &  attach_point_hint_r 
)

virtual zypp::media::MediaCD::~MediaCD (  )  [inline, virtual]

Definition at line 72 of file MediaCD.h.

References zypp::media::MediaHandler::release().


Member Function Documentation

bool zypp::media::MediaCD::openTray ( const std::string &  device_r  )  [static, private]

bool zypp::media::MediaCD::closeTray ( const std::string &  device_r  )  [static, private]

Definition at line 195 of file MediaCD.cc.

References DBG, zypp::str::strerror(), and WAR.

Referenced by attachTo().

MediaCD::DeviceList zypp::media::MediaCD::detectDevices ( bool  supportingDVD  )  const [private]

Definition at line 219 of file MediaCD.cc.

References DBG, WAR, and ZYPP_CAUGHT.

Referenced by attachTo(), forceEject(), and getDetectedDevices().

void zypp::media::MediaCD::attachTo ( bool  next = false  )  [protected, virtual]

void zypp::media::MediaCD::releaseFrom ( const std::string &  ejectDev  )  [protected, virtual]

Call concrete handler to release the media.

If eject is true, and the media is used in one handler instance only, physically eject the media (i.e. CD-ROM).

Asserted that media is attached.

Parameters:
ejectDev Device to eject. None if empty.
Exceptions:
MediaException 

Implements zypp::media::MediaHandler.

Definition at line 575 of file MediaCD.cc.

References zypp::media::MediaHandler::attachedMedia(), zypp::media::AttachedMedia::attachPoint, FORCE_RELEASE_FOREIGN, zypp::media::MediaHandler::forceRelaseAllMedia(), zypp::media::AttachedMedia::mediaSource, openTray(), zypp::media::Mount::umount(), ZYPP_CAUGHT, ZYPP_RETHROW, and ZYPP_THROW.

void zypp::media::MediaCD::getFile ( const Pathname &  filename  )  const [protected, virtual]

Call concrete handler to provide file below attach point.

Default implementation provided, that returns whether a file is located at 'localRoot + filename'.

Asserted that media is attached.

Exceptions:
MediaException 

Implements zypp::media::MediaHandler.

Definition at line 798 of file MediaCD.cc.

void zypp::media::MediaCD::getDir ( const Pathname &  dirname,
bool  recurse_r 
) const [protected, virtual]

Call concrete handler to provide directory content (not recursive!) below attach point.

Return E_not_supported_by_media if media does not support retrieval of directory content.

Default implementation provided, that returns whether a directory is located at 'localRoot + dirname'.

Asserted that media is attached.

Exceptions:
MediaException 

Implements zypp::media::MediaHandler.

Definition at line 810 of file MediaCD.cc.

void zypp::media::MediaCD::getDirInfo ( std::list< std::string > &  retlist,
const Pathname &  dirname,
bool  dots = true 
) const [protected, virtual]

Call concrete handler to provide a content list of directory on media via retlist.

If dots is false entries starting with '.' are not reported.

Return E_not_supported_by_media if media does not support retrieval of directory content.

Default implementation provided, that returns the content of a directory at 'localRoot + dirnname' retrieved via 'readdir'.

Asserted that media is attached and retlist is empty.

Exceptions:
MediaException 

Implements zypp::media::MediaHandler.

Definition at line 823 of file MediaCD.cc.

Referenced by getDirInfo().

void zypp::media::MediaCD::getDirInfo ( filesystem::DirContent retlist,
const Pathname &  dirname,
bool  dots = true 
) const [protected, virtual]

Basically the same as getDirInfo above.

The content list is returned as filesystem::DirContent, which includes name and filetype of each directory entry. Retrieving the filetype usg. requires an additional stat call for each entry, thus it's more expensive than a simple readdir.

Asserted that media is attached and retlist is empty.

Exceptions:
MediaException 

Implements zypp::media::MediaHandler.

Definition at line 837 of file MediaCD.cc.

References getDirInfo().

bool zypp::media::MediaCD::getDoesFileExist ( const Pathname &  filename  )  const [protected, virtual]

check if a file exists

Asserted that url is a file and not a dir.

Exceptions:
MediaException 

Implements zypp::media::MediaHandler.

Definition at line 843 of file MediaCD.cc.

void zypp::media::MediaCD::forceEject ( const std::string &  device  )  [protected, virtual]

Call concrete handler to physically eject the media (i.e.

CD-ROM) in case the media is not attached..

Asserted that media is not attached.

Reimplemented from zypp::media::MediaHandler.

Definition at line 623 of file MediaCD.cc.

References _devices, zypp::media::MediaHandler::_url, DBG, detectDevices(), zypp::media::MediaHandler::findAttachedMedia(), FORCE_RELEASE_FOREIGN, zypp::media::MediaHandler::forceRelaseAllMedia(), zypp::Url::getScheme(), isAttached(), zypp::media::AttachedMedia::mediaSource, openTray(), and ZYPP_THROW.

bool zypp::media::MediaCD::isAutoMountedMedia ( const AttachedMedia media  )  [protected, virtual]

bool zypp::media::MediaCD::hasMoreDevices (  )  [protected, virtual]

Check if the media has one more device available for attach(true).

Reimplemented from zypp::media::MediaHandler.

Definition at line 848 of file MediaCD.cc.

References _devices, and _lastdev_tried.

void zypp::media::MediaCD::getDetectedDevices ( std::vector< std::string > &  devices,
unsigned int &  index 
) const [protected, virtual]

Fill in a vector of detected ejectable devices and the index of the currently attached device within the vector.

The contents of the vector are the device names (/dev/cdrom and such).

Parameters:
devices vector to load with the device names
index index of the currently used device in the devices vector

Reimplemented from zypp::media::MediaHandler.

Definition at line 859 of file MediaCD.cc.

References _devices, _lastdev, zypp::media::MediaHandler::_url, DBG, detectDevices(), zypp::Url::getScheme(), and MIL.

bool zypp::media::MediaCD::isAttached (  )  const [virtual]

True if media is attached.

Reimplemented from zypp::media::MediaHandler.

Definition at line 786 of file MediaCD.cc.

References zypp::media::MediaHandler::checkAttached().

Referenced by attachTo(), and forceEject().


Member Data Documentation

list of devices to try to mount

Definition at line 34 of file MediaCD.h.

Referenced by attachTo(), forceEject(), getDetectedDevices(), hasMoreDevices(), and MediaCD().

number of last successful mounted device in list

Definition at line 37 of file MediaCD.h.

Referenced by attachTo(), and getDetectedDevices().

Definition at line 38 of file MediaCD.h.

Referenced by attachTo(), and hasMoreDevices().


The documentation for this class was generated from the following files:

doxygen