libzypp: zypp::media::MediaCD Class Reference

libzypp 17.38.10

zypp::media::MediaCD Class Reference

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

`#include <zypp/media/MediaCD.h>`

Inheritance diagram for zypp::media::MediaCD:

## Public Member Functions
| MediaCD (MirroredOrigin origin_r, const Pathname &attach_point_hint_r)
| ~MediaCD () override
bool | isAttached () const override
| True if media is attached.
Public Member Functions inherited from zypp::media::MediaHandler
bool | dependsOnParent (MediaAccessId parentId, bool exactIdMatch)
| Check if the current media handler depends on an another handler specified by media access id.
bool | dependsOnParent ()
void | resetParentId ()
| Called in case, where the media manager takes over the destruction of the parent id (e.g.
Pathname | attachPoint () const
| Return the currently used attach point.
void | setAttachPoint (const Pathname &path, bool temp)
| Set a new attach point.
void | setAttachPoint (const AttachPointRef &ref)
| Set a (shared) attach point.
AttachPoint | attachPointHint () const
| Get the actual attach point hint.
void | attachPointHint (const Pathname &path, bool temp)
| Set the attach point hint as specified by the user.
Pathname | createAttachPoint () const
| Try to create a default / temporary attach point.
Pathname | createAttachPoint (const Pathname &attach_root) const
| Try to create a temporary attach point in specified root.
void | removeAttachPoint ()
| Remove unused attach point.
virtual bool | checkAttachPoint (const Pathname &apoint) const
| Verify if the specified directory as attach point (root) as requires by the particular media handler implementation.
bool | isUseableAttachPoint (const Pathname &path, bool mtab=true) const
| Ask media manager, if the specified path is already used as attach point or if there are another attach points bellow of it.
std::string | mediaSourceName () const
| Get the media source name or an empty string.
void | setMediaSource (const MediaSourceRef &ref)
| Set new media source reference.
AttachedMedia | findAttachedMedia (const MediaSourceRef &media) const
| Ask the media manager if specified media source is already attached.
AttachedMedia | attachedMedia () const
| Returns the attached media.
bool | isSharedMedia () const
| Returns a hint if the media is shared or not.
bool | checkAttached (bool matchMountFs) const
| Check actual mediaSource attachment against the current mount table of the system.
void | forceRelaseAllMedia (bool matchMountFs)
| Call to this function will try to release all media matching the currenlty attached media source, that it is able to find in the mount table.
void | forceRelaseAllMedia (const MediaSourceRef &ref, bool matchMountFs)
| MediaHandler (MirroredOrigin origin_r, const Pathname &attach_point_r, Pathname urlpath_below_attachpoint_r, const bool does_download_r)
| If the concrete media handler provides a nonempty attach_point, it must be an existing directory.
virtual | ~MediaHandler ()
| Contolling MediaAccess takes care, that attached media is released prior to deleting this.
bool | downloads () const
| Hint if files are downloaded or not.
std::string | protocol () const
| Protocol hint for MediaAccess.
const MirroredOrigin & | origin () const
| Access the internal MirroredOrigin (authority and mirrors).
Url | url () const
| Primary Url used.
OriginEndpoint | originEndpoint () const
| Primary OriginEndpoint used.
void | attach (bool next)
| Use concrete handler to attach the media.
Pathname | localRoot () const
| Return the local directory that corresponds to medias url, no matter if media isAttached or not.
Pathname | localPath (const Pathname &pathname) const
| Files provided will be available at 'localPath(filename)'.
void | disconnect ()
| Use concrete handler to isconnect media.
void | release (const std::string &ejectDev="")
| Use concrete handler to release the media.
void | provideFile (const OnMediaLocation &file) const
| Use concrete handler to provide file denoted by path below 'localRoot'.
void | provideFileCopy (const OnMediaLocation &srcFile, const Pathname &targetFilename) const
| Call concrete handler to provide a copy of a file under a different place in the file system (usually not under attach point) as a copy.
void | provideDir (const Pathname &dirname) const
| Use concrete handler to provide directory denoted by path below 'localRoot' (not recursive!).
void | provideDirTree (const Pathname &dirname) const
| Use concrete handler to provide directory tree denoted by path below 'localRoot' (recursive!
void | releaseFile (const Pathname &filename) const
| Remove filename below localRoot IFF handler downloads files to the local filesystem.
void | releaseDir (const Pathname &dirname) const
| Remove directory tree below localRoot IFF handler downloads files to the local filesystem.
void | releasePath (const Pathname &pathname) const
| Remove pathname below localRoot IFF handler downloads files to the local filesystem.
void | dirInfo (std::list< std::string > &retlist, const Pathname &dirname, bool dots=true) const
| Return content of directory on media via retlist.
void | dirInfo (filesystem::DirContent &retlist, const Pathname &dirname, bool dots=true) const
| Basically the same as dirInfo above.
bool | doesFileExist (const Pathname &filename) const
| check if a file exists
virtual void | precacheFiles (const std::vector< OnMediaLocation > &files)
| Tries to fetch the given files and precaches them.

## Protected Member Functions
void | attachTo (bool next=false) override
| Call concrete handler to attach the media.
void | releaseFrom (const std::string &ejectDev) override
| Call concrete handler to release the media.
void | getFile (const OnMediaLocation &file) const override
| Call concrete handler to provide file below attach point.
void | getDir (const Pathname &dirname, bool recurse_r) const override
| Call concrete handler to provide directory content (not recursive!) below attach point.
void | getDirInfo (std::list< std::string > &retlist, const Pathname &dirname, bool dots=true) const override
| Call concrete handler to provide a content list of directory on media via retlist.
void | getDirInfo (filesystem::DirContent &retlist, const Pathname &dirname, bool dots=true) const override
| Basically the same as getDirInfo above.
bool | getDoesFileExist (const Pathname &filename) const override
| check if a file exists
void | forceEject (const std::string &ejectDev) override
| Call concrete handler to physically eject the media (i.e.
bool | hasMoreDevices () override
| Check if the media has one more device available for attach(true).
void | getDetectedDevices (std::vector< std::string > &devices, unsigned int &index) const override
| Fill in a vector of detected ejectable devices and the index of the currently attached device within the vector.
Protected Member Functions inherited from zypp::media::MediaHandler
virtual void | disconnectFrom ()
| Call concrete handler to disconnect media.
virtual void | getFileCopy (const OnMediaLocation &file, const Pathname &targetFilename) const
| Call concrete handler to provide a file under a different place in the file system (usually not under attach point) as a copy.
void | getDirectoryYast (std::list< std::string > &retlist, const Pathname &dirname, bool dots=true) const
| Retrieve and if available scan dirname/directory.yast.
void | getDirectoryYast (filesystem::DirContent &retlist, const Pathname &dirname, bool dots=true) const
| Retrieve and if available scan dirname/directory.yast.

## Private Types
using | DeviceList = std::list<MediaSource>

## 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

## Additional Inherited Members
Public Types inherited from zypp::media::MediaHandler
using | Ptr = shared_ptr<MediaHandler>
using | constPtr = shared_ptr<const MediaHandler>
Static Public Member Functions inherited from zypp::media::MediaHandler
static bool | setAttachPrefix (const Pathname &attach_prefix)
static std::string | getRealPath (const std::string &path)
static Pathname | getRealPath (const Pathname &path)
static bool | checkAttachPoint (const Pathname &apoint, bool empty_dir, bool writeable)
| Verify if the specified directory as attach point (root) using requested checks.
Protected Attributes inherited from zypp::media::MediaHandler
MirroredOrigin | _origin
| Contains the authority URL and mirrors.
MediaAccessId | _parentId
| Access Id of media handler we depend on.

## Detailed Description

Implementation class for CD/DVD MediaHandler.

See also
  MediaHandler

Definition at line 28 of file MediaCD.h.

## Member Typedef Documentation

## ◆ DeviceList

using zypp::media::MediaCD::DeviceList = std::list<MediaSource>
| private

Definition at line 31 of file MediaCD.h.

## Constructor & Destructor Documentation

## ◆ MediaCD()

zypp::media::MediaCD::MediaCD | ( | MirroredOrigin | origin_r,
|  | const Pathname & | attach_point_hint_r )

Definition at line 130 of file MediaCD.cc.

## ◆ ~MediaCD()

zypp::media::MediaCD::~MediaCD | ( |  | ) |
| inlineoverride

Definition at line 69 of file MediaCD.h.

## Member Function Documentation

## ◆ openTray()

bool zypp::media::MediaCD::openTray | ( | const std::string & | device_r | ) |
| staticprivate

Definition at line 178 of file MediaCD.cc.

## ◆ closeTray()

bool zypp::media::MediaCD::closeTray | ( | const std::string & | device_r | ) |
| staticprivate

Definition at line 189 of file MediaCD.cc.

## ◆ detectDevices()

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

Definition at line 195 of file MediaCD.cc.

## ◆ attachTo()

void zypp::media::MediaCD::attachTo | ( | bool | next = false | ) |
| overrideprotectedvirtual

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

## ◆ releaseFrom()

void zypp::media::MediaCD::releaseFrom | ( | const std::string & | ejectDev | ) |
| overrideprotectedvirtual

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

## ◆ getFile()

void zypp::media::MediaCD::getFile | ( | const OnMediaLocation & | file | ) | const
| overrideprotectedvirtual

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 |

Reimplemented from zypp::media::MediaHandler.

Definition at line 593 of file MediaCD.cc.

## ◆ getDir()

void zypp::media::MediaCD::getDir | ( | const Pathname & | dirname,
|  | bool | recurse_r ) const
| overrideprotectedvirtual

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

## ◆ getDirInfo() [1/2]

void zypp::media::MediaCD::getDirInfo | ( | std::list< std::string > & | retlist,
|  | const Pathname & | dirname,
|  | bool | dots = true ) const
| overrideprotectedvirtual

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

## ◆ getDirInfo() [2/2]

void zypp::media::MediaCD::getDirInfo | ( | filesystem::DirContent & | retlist,
|  | const Pathname & | dirname,
|  | bool | dots = true ) const
| overrideprotectedvirtual

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

## ◆ getDoesFileExist()

bool zypp::media::MediaCD::getDoesFileExist | ( | const Pathname & | filename | ) | const
| overrideprotectedvirtual

check if a file exists

Asserted that url is a file and not a dir.

Exceptions

  MediaException |

Implements zypp::media::MediaHandler.

Definition at line 638 of file MediaCD.cc.

## ◆ forceEject()

void zypp::media::MediaCD::forceEject | ( | const std::string & | device | ) |
| overrideprotectedvirtual

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

## ◆ hasMoreDevices()

bool zypp::media::MediaCD::hasMoreDevices | ( |  | ) |
| overrideprotectedvirtual

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

Reimplemented from zypp::media::MediaHandler.

Definition at line 644 of file MediaCD.cc.

## ◆ getDetectedDevices()

void zypp::media::MediaCD::getDetectedDevices | ( | std::vector< std::string > & | devices,
|  | unsigned int & | index ) const
| overrideprotectedvirtual

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

## ◆ isAttached()

bool zypp::media::MediaCD::isAttached | ( |  | ) | const
| overridevirtual

True if media is attached.

Reimplemented from zypp::media::MediaHandler.

Definition at line 581 of file MediaCD.cc.

## Member Data Documentation

## ◆ _devices

DeviceList zypp::media::MediaCD::_devices
| mutableprivate

list of devices to try to mount

Definition at line 33 of file MediaCD.h.

## ◆ _lastdev

int zypp::media::MediaCD::_lastdev
| private

number of last successful mounted device in list

Definition at line 36 of file MediaCD.h.

## ◆ _lastdev_tried

int zypp::media::MediaCD::_lastdev_tried
| private

Definition at line 37 of file MediaCD.h.

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

- zypp/media/MediaCD.h
- zypp/media/MediaCD.cc