zypp::media::MediaCD Class Reference

#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 (bool eject)
 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 ()
 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).

Private Types

typedef std::list
< MediaSource
DeviceList

Private Member Functions

DeviceList detectDevices (bool supportingDVD)

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 
)

Definition at line 121 of file MediaCD.cc.

References _devices, zypp::media::MediaHandler::_url, zypp::Url::asString(), DBG, detectDevices(), zypp::media::MediaSource::equals(), ERR, zypp::Url::getQueryParam(), zypp::Url::getScheme(), MIL, and ZYPP_THROW.

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

Definition at line 68 of file MediaCD.h.

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


Member Function Documentation

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

Definition at line 245 of file MediaCD.cc.

References zypp::ExternalProgram::close(), DBG, EJECT_TOOL_PATH, MIL, zypp::externalprogram::ExternalDataSource::receiveLine(), zypp::ExternalProgram::Stderr_To_Stdout, zypp::str::strerror(), and WAR.

Referenced by forceEject(), and releaseFrom().

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

Definition at line 304 of file MediaCD.cc.

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

Referenced by attachTo().

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

Definition at line 328 of file MediaCD.cc.

References DBG, zypp::media::get_sysfs_path(), zypp::media::isNewDevice(), zypp::str::numstring(), and ZYPP_CAUGHT.

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

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

Call concrete handler to attach the media.

Asserted that not already attached, and attachPoint is a directory.

Parameters:
next try next available device in turn until end of device list is reached (for media which are accessible through multiple devices like cdroms).
Exceptions:
MediaException 

Implements zypp::media::MediaHandler.

Definition at line 469 of file MediaCD.cc.

References _devices, _lastdev, _lastdev_tried, zypp::media::MediaHandler::_url, zypp::Url::asString(), zypp::ui::asString(), zypp::media::AttachedMedia::attachPoint, zypp::media::MediaHandler::attachPoint(), closeTray(), zypp::media::MediaHandler::createAttachPoint(), DBG, detectDevices(), zypp::media::MediaSource::equals(), zypp::media::MediaHandler::findAttachedMedia(), zypp::media::MediaManager::getMountEntries(), zypp::Url::getQueryParam(), zypp::Url::getScheme(), isAttached(), isAutoMountedMedia(), zypp::media::MediaHandler::isUseableAttachPoint(), zypp::media::MediaSource::maj_nr, zypp::media::AttachedMedia::mediaSource, zypp::media::MediaSource::min_nr, zypp::media::Mount::mount(), zypp::media::MediaMountException::mountError(), zypp::media::MediaMountException::mountOutput(), zypp::media::MediaSource::name, zypp::media::MediaHandler::removeAttachPoint(), zypp::media::MediaHandler::setAttachPoint(), zypp::media::MediaHandler::setMediaSource(), zypp::media::Mount::umount(), zypp::media::MediaHandler::url(), ZYPP_CAUGHT, and ZYPP_THROW.

void zypp::media::MediaCD::releaseFrom ( bool  eject  )  [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.

Exceptions:
MediaException 

Implements zypp::media::MediaHandler.

Definition at line 739 of file MediaCD.cc.

References zypp::media::MediaHandler::attachedMedia(), zypp::media::AttachedMedia::attachPoint, FORCE_RELEASE_FOREIGN, zypp::media::MediaHandler::forceRelaseAllMedia(), zypp::media::AttachedMedia::mediaSource, zypp::media::MediaHandler::mediaSourceName(), 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 956 of file MediaCD.cc.

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

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 968 of file MediaCD.cc.

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

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 981 of file MediaCD.cc.

References zypp::media::MediaHandler::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 995 of file MediaCD.cc.

References zypp::media::MediaHandler::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 1001 of file MediaCD.cc.

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

void zypp::media::MediaCD::forceEject (  )  [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 786 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]

Reimplemented from zypp::media::MediaHandler.

Definition at line 879 of file MediaCD.cc.

References zypp::media::AttachedMedia::attachPoint, DBG, zypp::media::AttachedMedia::mediaSource, and ZYPP_CAUGHT.

Referenced by attachTo().

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 1006 of file MediaCD.cc.

References _devices, and _lastdev_tried.

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

True if media is attached.

Reimplemented from zypp::media::MediaHandler.

Definition at line 944 of file MediaCD.cc.

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

Referenced by attachTo(), and forceEject().


Member Data Documentation

DeviceList zypp::media::MediaCD::_devices [private]

list of devices to try to mount

Definition at line 34 of file MediaCD.h.

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

int zypp::media::MediaCD::_lastdev [private]

number of last successful mounted device in list

Definition at line 37 of file MediaCD.h.

Referenced by attachTo().

int zypp::media::MediaCD::_lastdev_tried [private]

Definition at line 38 of file MediaCD.h.

Referenced by attachTo(), and hasMoreDevices().


The documentation for this class was generated from the following files:
Generated on Tue Sep 25 19:23:20 2007 for libzypp by  doxygen 1.5.3