#include <MediaHandler.h>
Public Types | |
typedef shared_ptr< MediaHandler > | Ptr |
typedef shared_ptr< const MediaHandler > | constPtr |
Public Member Functions | |
MediaHandler (const Url &url_r, const Pathname &attach_point_r, const 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. | |
Url | url () const |
Url used. | |
void | attach (bool next) |
Use concrete handler to attach the media. | |
virtual bool | isAttached () const |
True if media is attached. | |
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 (Pathname filename) const |
Use concrete handler to provide file denoted by path below 'localRoot'. | |
void | provideFileCopy (Pathname srcFilename, 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 (Pathname dirname) const |
Use concrete handler to provide directory denoted by path below 'localRoot' (not recursive!). | |
void | provideDirTree (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 (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 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. | |
Static Public Member Functions | |
static bool | setAttachPrefix (const Pathname &attach_prefix) |
static std::string | getRealPath (const std::string &path) |
static Pathname | getRealPath (const Pathname &path) |
Protected Member Functions | |
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, bool autoMountedOny=true) |
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, bool autoMountedOnly=true) |
virtual bool | isAutoMountedMedia (const AttachedMedia &media) |
virtual void | attachTo (bool next=false)=0 |
Call concrete handler to attach the media. | |
virtual void | disconnectFrom () |
Call concrete handler to disconnect media. | |
virtual void | releaseFrom (const std::string &ejectDev="")=0 |
Call concrete handler to release the media. | |
virtual void | forceEject (const std::string &device) |
Call concrete handler to physically eject the media (i.e. | |
virtual void | getFile (const Pathname &filename) const =0 |
Call concrete handler to provide file below attach point. | |
virtual void | getFileCopy (const Pathname &srcFilename, 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. | |
virtual void | getDir (const Pathname &dirname, bool recurse_r) const =0 |
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 =0 |
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 =0 |
Basically the same as getDirInfo above. | |
virtual bool | getDoesFileExist (const Pathname &filename) const =0 |
check if a file exists | |
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. | |
Static Protected Member Functions | |
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 | |
const Url | _url |
Url to handle. | |
MediaAccessId | _parentId |
Access Id of media handler we depend on. | |
Private Attributes | |
MediaSourceRef | _mediaSource |
The attached media source description reference. | |
AttachPointRef | _attachPoint |
This is where the media will be actually attached ("mounted"). | |
AttachPoint | _AttachPointHint |
The user provided attach preferred point. | |
Pathname | _relativeRoot |
The relative root directory of the data on the media. | |
bool | _does_download |
True if concrete handler downloads files to the local filesystem. | |
time_t | _attach_mtime |
timestamp of the the last attach verification | |
Static Private Attributes | |
static Pathname | _attachPrefix |
User defined default attach point prefix. | |
Friends | |
class | MediaAccess |
MediaAccess (MediaManager) needs access to the attachedMedia() function to deliver a shared media source and its attach point to the media manager and then to other media handler instances. | |
std::ostream & | operator<< (std::ostream &str, const MediaHandler &obj) |
Handles the requests forwarded by MediaAccess. The public interface contains nonvirtual methods, which should do common sanitychecks and logging. For the real action they call virtual methods overloaded by the concrete handler.
Definition at line 45 of file MediaHandler.h.
typedef shared_ptr<MediaHandler> zypp::media::MediaHandler::Ptr |
Definition at line 49 of file MediaHandler.h.
typedef shared_ptr<const MediaHandler> zypp::media::MediaHandler::constPtr |
Definition at line 50 of file MediaHandler.h.
zypp::media::MediaHandler::MediaHandler | ( | const Url & | url_r, | |
const Pathname & | attach_point_r, | |||
const 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.
On an empty attach_point, MediaHandler will create a temporay directory, which will be erased from destructor.
On any error, the attach_point is set to an empty Pathname, which should lead to E_bad_attachpoint.
Definition at line 52 of file MediaHandler.cc.
References _url, attachPointHint(), ERR, getRealPath(), zypp::Url::getScheme(), and setAttachPoint().
zypp::media::MediaHandler::~MediaHandler | ( | ) | [virtual] |
Contolling MediaAccess takes care, that attached media is released prior to deleting this.
Definition at line 103 of file MediaHandler.cc.
References removeAttachPoint().
bool zypp::media::MediaHandler::setAttachPrefix | ( | const Pathname & | attach_prefix | ) | [static] |
std::string zypp::media::MediaHandler::getRealPath | ( | const std::string & | path | ) | [static] |
Definition at line 119 of file MediaHandler.cc.
Referenced by zypp::media::MediaDIR::attachTo(), createAttachPoint(), getRealPath(), and MediaHandler().
zypp::Pathname zypp::media::MediaHandler::getRealPath | ( | const Pathname & | path | ) | [static] |
bool zypp::media::MediaHandler::dependsOnParent | ( | MediaAccessId | parentId, | |
bool | exactIdMatch | |||
) | [protected] |
Check if the current media handler depends on an another handler specified by media access id.
parentId | The id of the parent handler to check against. |
Definition at line 963 of file MediaHandler.cc.
References _parentId, zypp::media::MediaManager::getAttachedMedia(), and zypp::media::AttachedMedia::mediaSource.
Referenced by zypp::media::MediaAccess::dependsOnParent().
bool zypp::media::MediaHandler::dependsOnParent | ( | ) | [protected] |
void zypp::media::MediaHandler::resetParentId | ( | ) | [protected] |
Called in case, where the media manager takes over the destruction of the parent id (e.g.
while destruction of the media manager).
Definition at line 113 of file MediaHandler.cc.
References _parentId.
Referenced by zypp::media::MediaAccess::resetParentId().
Pathname zypp::media::MediaHandler::attachPoint | ( | ) | const [protected] |
Return the currently used attach point.
Definition at line 213 of file MediaHandler.cc.
References _attachPoint.
Referenced by zypp::media::MediaNFS::attachTo(), zypp::media::MediaISO::attachTo(), zypp::media::MediaDISK::attachTo(), zypp::media::MediaDIR::attachTo(), zypp::media::MediaCurl::attachTo(), zypp::media::MediaCIFS::attachTo(), zypp::media::MediaCD::attachTo(), zypp::media::MediaCurl::MediaCurl(), zypp::media::MediaNFS::releaseFrom(), zypp::media::MediaISO::releaseFrom(), zypp::media::MediaDISK::releaseFrom(), and zypp::media::MediaCIFS::releaseFrom().
void zypp::media::MediaHandler::setAttachPoint | ( | const Pathname & | path, | |
bool | temp | |||
) | [protected] |
Set a new attach point.
path | The attach point directory path. | |
temp | If to remove the attach point while cleanup. |
Definition at line 228 of file MediaHandler.cc.
References _attachPoint, and zypp::RW_pointer< _D, _Traits >::reset().
Referenced by attach(), zypp::media::MediaNFS::attachTo(), zypp::media::MediaISO::attachTo(), zypp::media::MediaDISK::attachTo(), zypp::media::MediaDIR::attachTo(), zypp::media::MediaCurl::attachTo(), zypp::media::MediaCIFS::attachTo(), zypp::media::MediaCD::attachTo(), zypp::media::MediaCurl::MediaCurl(), MediaHandler(), release(), and removeAttachPoint().
void zypp::media::MediaHandler::setAttachPoint | ( | const AttachPointRef & | ref | ) | [protected] |
Set a (shared) attach point.
ref | New attach point reference. |
Definition at line 251 of file MediaHandler.cc.
References _attachPoint, zypp::RW_pointer< _D, _Traits >::reset(), and zypp::RW_pointer< _D, _Traits >::swap().
AttachPoint zypp::media::MediaHandler::attachPointHint | ( | ) | const [protected] |
Get the actual attach point hint.
Definition at line 283 of file MediaHandler.cc.
References _AttachPointHint.
Referenced by attach(), and MediaHandler().
void zypp::media::MediaHandler::attachPointHint | ( | const Pathname & | path, | |
bool | temp | |||
) | [protected] |
Set the attach point hint as specified by the user.
path | The attach point directory path. | |
temp | If to remove the attach point while cleanup. |
Definition at line 268 of file MediaHandler.cc.
References _AttachPointHint, zypp::media::AttachPoint::path, and zypp::media::AttachPoint::temp.
Pathname zypp::media::MediaHandler::createAttachPoint | ( | ) | const [protected] |
Try to create a default / temporary attach point.
It trys to create it in attachPrefix if avaliable, then in built-in directories.
Definition at line 340 of file MediaHandler.cc.
References zypp::filesystem::TmpPath::defaultLocation(), ERR, and MIL.
Referenced by zypp::media::MediaNFS::attachTo(), zypp::media::MediaISO::attachTo(), zypp::media::MediaDISK::attachTo(), zypp::media::MediaCurl::attachTo(), zypp::media::MediaCIFS::attachTo(), and zypp::media::MediaCD::attachTo().
Pathname zypp::media::MediaHandler::createAttachPoint | ( | const Pathname & | attach_root | ) | const [protected] |
Try to create a temporary attach point in specified root.
attach_root | The attach root dir where to create the attach point in. |
Definition at line 376 of file MediaHandler.cc.
References DBG, ERR, getRealPath(), zypp::str::hexstring(), zypp::filesystem::mkdir(), and zypp::filesystem::rmdir().
void zypp::media::MediaHandler::removeAttachPoint | ( | ) | [protected] |
Remove unused attach point.
If the attach point is temporary, the attach point directory and all it content will be removed.
Definition at line 171 of file MediaHandler.cc.
References _attachPoint, _mediaSource, DBG, ERR, INT, MIL, zypp::filesystem::recursive_rmdir(), setAttachPoint(), and zypp::RW_pointer< _D, _Traits >::unique().
Referenced by attach(), zypp::media::MediaNFS::attachTo(), zypp::media::MediaISO::attachTo(), zypp::media::MediaDISK::attachTo(), zypp::media::MediaCIFS::attachTo(), zypp::media::MediaCD::attachTo(), release(), and ~MediaHandler().
bool zypp::media::MediaHandler::checkAttachPoint | ( | const Pathname & | apoint | ) | const [protected, virtual] |
Verify if the specified directory as attach point (root) as requires by the particular media handler implementation.
apoint | The directory to check. |
Reimplemented in zypp::media::MediaAria2c, and zypp::media::MediaCurl.
Definition at line 883 of file MediaHandler.cc.
Referenced by setAttachPrefix().
bool zypp::media::MediaHandler::checkAttachPoint | ( | const Pathname & | apoint, | |
bool | empty_dir, | |||
bool | writeable | |||
) | [static, protected] |
Verify if the specified directory as attach point (root) using requested checks.
apoint | The directory to check. | |
empty_dir | Check if the directory is empty. | |
writeable | Check if the directory is writeable. |
Definition at line 890 of file MediaHandler.cc.
References ERR, zypp::filesystem::is_empty_dir(), and zypp::filesystem::rmdir().
bool zypp::media::MediaHandler::isUseableAttachPoint | ( | const Pathname & | path, | |
bool | mtab = true | |||
) | const [protected] |
Ask media manager, if the specified path is already used as attach point or if there are another attach points bellow of it.
path | The attach point path to check. | |
mtab | Whether to check against the mtab, too. |
Definition at line 438 of file MediaHandler.cc.
References zypp::media::MediaManager::isUseableAttachPoint().
Referenced by zypp::media::MediaNFS::attachTo(), zypp::media::MediaISO::attachTo(), zypp::media::MediaDISK::attachTo(), zypp::media::MediaCurl::attachTo(), zypp::media::MediaCIFS::attachTo(), and zypp::media::MediaCD::attachTo().
std::string zypp::media::MediaHandler::mediaSourceName | ( | ) | const [inline, protected] |
Get the media source name or an empty string.
Definition at line 226 of file MediaHandler.h.
References _mediaSource.
void zypp::media::MediaHandler::setMediaSource | ( | const MediaSourceRef & | ref | ) | [protected] |
Set new media source reference.
ref | The new reference. |
Definition at line 454 of file MediaHandler.cc.
References _mediaSource, and zypp::RW_pointer< _D, _Traits >::reset().
Referenced by attach(), zypp::media::MediaNFS::attachTo(), zypp::media::MediaISO::attachTo(), zypp::media::MediaDISK::attachTo(), zypp::media::MediaDIR::attachTo(), zypp::media::MediaCurl::attachTo(), zypp::media::MediaCIFS::attachTo(), zypp::media::MediaCD::attachTo(), and release().
AttachedMedia zypp::media::MediaHandler::findAttachedMedia | ( | const MediaSourceRef & | media | ) | const [protected] |
Ask the media manager if specified media source is already attached.
Definition at line 297 of file MediaHandler.cc.
Referenced by zypp::media::MediaNFS::attachTo(), zypp::media::MediaISO::attachTo(), zypp::media::MediaDISK::attachTo(), zypp::media::MediaCIFS::attachTo(), zypp::media::MediaCD::attachTo(), and zypp::media::MediaCD::forceEject().
AttachedMedia zypp::media::MediaHandler::attachedMedia | ( | ) | const [protected] |
Returns the attached media.
Used by MediaManager to find other handlers using the same source.
Definition at line 470 of file MediaHandler.cc.
References _attachPoint, and _mediaSource.
Referenced by zypp::media::MediaAccess::attachedMedia(), checkAttached(), forceRelaseAllMedia(), zypp::media::MediaDISK::releaseFrom(), and zypp::media::MediaCD::releaseFrom().
bool zypp::media::MediaHandler::isSharedMedia | ( | ) | const [protected] |
Returns a hint if the media is shared or not.
Definition at line 487 of file MediaHandler.cc.
References _mediaSource, and zypp::RW_pointer< _D, _Traits >::unique().
Referenced by zypp::media::MediaAccess::isSharedMedia().
bool zypp::media::MediaHandler::checkAttached | ( | bool | matchMountFs | ) | const [protected] |
Check actual mediaSource attachment against the current mount table of the system.
Used to implement isAttached().
matchMountFs | If to use the filesystem type from the mount table (nfs, smb and cifs) or from mediaSource while compare of a mount entry with mediaSource. |
Definition at line 501 of file MediaHandler.cc.
References _attach_mtime, _mediaSource, attachedMedia(), zypp::media::AttachedMedia::attachPoint, DBG, zypp::dumpRange(), ERR, for_, zypp::media::MediaManager::getMountEntries(), zypp::media::MediaManager::getMountTableMTime(), zypp::str::hasPrefix(), zypp::media::AttachedMedia::mediaSource, MIL, zypp::RW_pointer< _D, _Traits >::reset(), and WAR.
Referenced by zypp::media::MediaNFS::isAttached(), zypp::media::MediaISO::isAttached(), zypp::media::MediaDISK::isAttached(), zypp::media::MediaCIFS::isAttached(), and zypp::media::MediaCD::isAttached().
void zypp::media::MediaHandler::forceRelaseAllMedia | ( | bool | matchMountFs, | |
bool | autoMountedOny = true | |||
) | [protected] |
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.
This means also foreign (user) mounts!
matchMountFs | If to use the filesystem type from the mount table (nfs, smb and cifs) or from mediaSource while compare of a mount entry with mediaSource. |
Definition at line 786 of file MediaHandler.cc.
References attachedMedia().
Referenced by zypp::media::MediaCD::forceEject(), and zypp::media::MediaCD::releaseFrom().
void zypp::media::MediaHandler::forceRelaseAllMedia | ( | const MediaSourceRef & | ref, | |
bool | matchMountFs, | |||
bool | autoMountedOnly = true | |||
) | [protected] |
Definition at line 791 of file MediaHandler.cc.
References DBG, zypp::media::MediaManager::getMountEntries(), zypp::str::hasPrefix(), isAutoMountedMedia(), zypp::media::Mount::umount(), and ZYPP_CAUGHT.
bool zypp::media::MediaHandler::isAutoMountedMedia | ( | const AttachedMedia & | media | ) | [protected, virtual] |
Reimplemented in zypp::media::MediaCD.
Definition at line 780 of file MediaHandler.cc.
Referenced by zypp::media::MediaDISK::attachTo(), and forceRelaseAllMedia().
virtual void zypp::media::MediaHandler::attachTo | ( | bool | next = false |
) | [protected, pure virtual] |
Call concrete handler to attach the media.
Asserted that not already attached, and attachPoint is a directory.
next | try next available device in turn until end of device list is reached (for media which are accessible through multiple devices like cdroms). |
MediaException |
Implemented in zypp::media::MediaAria2c, zypp::media::MediaCD, zypp::media::MediaCIFS, zypp::media::MediaCurl, zypp::media::MediaDIR, zypp::media::MediaDISK, zypp::media::MediaISO, zypp::media::MediaNFS, and zypp::media::MediaPlugin.
Referenced by attach().
virtual void zypp::media::MediaHandler::disconnectFrom | ( | ) | [inline, protected, virtual] |
Call concrete handler to disconnect media.
Asserted that media is attached.
This is useful for media which e.g. holds open a connection to a server like FTP. After calling disconnect() the media object still is valid and files are present.
After calling disconnect() it's not possible to call provideFile() or provideDir() anymore.
MediaException |
Reimplemented in zypp::media::MediaAria2c, and zypp::media::MediaCurl.
Definition at line 325 of file MediaHandler.h.
Referenced by disconnect().
virtual void zypp::media::MediaHandler::releaseFrom | ( | const std::string & | ejectDev = "" |
) | [protected, pure 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.
ejectDev | Device to eject. None if empty. |
MediaException |
Implemented in zypp::media::MediaAria2c, zypp::media::MediaCD, zypp::media::MediaCIFS, zypp::media::MediaCurl, zypp::media::MediaDIR, zypp::media::MediaDISK, zypp::media::MediaISO, zypp::media::MediaNFS, and zypp::media::MediaPlugin.
Referenced by release().
virtual void zypp::media::MediaHandler::forceEject | ( | const std::string & | device | ) | [inline, 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 in zypp::media::MediaCD.
Definition at line 347 of file MediaHandler.h.
Referenced by release().
void zypp::media::MediaHandler::getFile | ( | const Pathname & | filename | ) | const [protected, pure 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.
MediaException |
Implemented in zypp::media::MediaAria2c, zypp::media::MediaCD, zypp::media::MediaCIFS, zypp::media::MediaCurl, zypp::media::MediaDIR, zypp::media::MediaDISK, zypp::media::MediaISO, zypp::media::MediaNFS, and zypp::media::MediaPlugin.
Definition at line 1233 of file MediaHandler.cc.
References localPath(), url(), and ZYPP_THROW.
Referenced by getDirectoryYast(), getFileCopy(), and provideFile().
void zypp::media::MediaHandler::getFileCopy | ( | const Pathname & | srcFilename, | |
const Pathname & | targetFilename | |||
) | const [protected, virtual] |
Call concrete handler to provide a file under a different place in the file system (usually not under attach point) as a copy.
Media must be attached before by callee.
Default implementation provided that calls getFile(srcFilename) and copies the result around.
MediaException |
Reimplemented in zypp::media::MediaAria2c, and zypp::media::MediaCurl.
Definition at line 1247 of file MediaHandler.cc.
References zypp::iostr::copy(), getFile(), localPath(), and ZYPP_THROW.
Referenced by provideFileCopy().
void zypp::media::MediaHandler::getDir | ( | const Pathname & | dirname, | |
bool | recurse_r | |||
) | const [protected, pure 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.
MediaException |
Implemented in zypp::media::MediaAria2c, zypp::media::MediaCD, zypp::media::MediaCIFS, zypp::media::MediaCurl, zypp::media::MediaDIR, zypp::media::MediaDISK, zypp::media::MediaISO, zypp::media::MediaNFS, and zypp::media::MediaPlugin.
Definition at line 1267 of file MediaHandler.cc.
References localPath(), url(), and ZYPP_THROW.
Referenced by provideDir(), and provideDirTree().
void zypp::media::MediaHandler::getDirInfo | ( | std::list< std::string > & | retlist, | |
const Pathname & | dirname, | |||
bool | dots = true | |||
) | const [protected, pure 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.
MediaException |
Implemented in zypp::media::MediaAria2c, zypp::media::MediaCD, zypp::media::MediaCIFS, zypp::media::MediaCurl, zypp::media::MediaDIR, zypp::media::MediaDISK, zypp::media::MediaISO, zypp::media::MediaNFS, and zypp::media::MediaPlugin.
Definition at line 1289 of file MediaHandler.cc.
References getDirectoryYast(), localPath(), zypp::filesystem::readdir(), zypp::Exception::remember(), url(), and ZYPP_THROW.
Referenced by dirInfo().
void zypp::media::MediaHandler::getDirInfo | ( | filesystem::DirContent & | retlist, | |
const Pathname & | dirname, | |||
bool | dots = true | |||
) | const [protected, pure 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.
MediaException |
Implemented in zypp::media::MediaAria2c, zypp::media::MediaCD, zypp::media::MediaCIFS, zypp::media::MediaCurl, zypp::media::MediaDIR, zypp::media::MediaDISK, zypp::media::MediaISO, zypp::media::MediaNFS, and zypp::media::MediaPlugin.
Definition at line 1333 of file MediaHandler.cc.
References getDirectoryYast(), localPath(), zypp::filesystem::readdir(), zypp::Exception::remember(), url(), and ZYPP_THROW.
bool zypp::media::MediaHandler::getDoesFileExist | ( | const Pathname & | filename | ) | const [protected, pure virtual] |
check if a file exists
Asserted that url is a file and not a dir.
MediaException |
Implemented in zypp::media::MediaAria2c, zypp::media::MediaCD, zypp::media::MediaCIFS, zypp::media::MediaCurl, zypp::media::MediaDIR, zypp::media::MediaDISK, zypp::media::MediaISO, zypp::media::MediaNFS, and zypp::media::MediaPlugin.
Definition at line 1374 of file MediaHandler.cc.
References localPath(), url(), and ZYPP_THROW.
Referenced by doesFileExist().
void zypp::media::MediaHandler::getDirectoryYast | ( | std::list< std::string > & | retlist, | |
const Pathname & | dirname, | |||
bool | dots = true | |||
) | const [protected] |
Retrieve and if available scan dirname/directory.yast.
Asserted that media is attached.
MediaException |
Definition at line 1150 of file MediaHandler.cc.
Referenced by getDirInfo(), zypp::media::MediaCurl::getDirInfo(), and zypp::media::MediaAria2c::getDirInfo().
void zypp::media::MediaHandler::getDirectoryYast | ( | filesystem::DirContent & | retlist, | |
const Pathname & | dirname, | |||
bool | dots = true | |||
) | const [protected] |
Retrieve and if available scan dirname/directory.yast.
Asserted that media is attached.
MediaException |
Definition at line 1170 of file MediaHandler.cc.
References zypp::str::asString(), DBG, ERR, zypp::filesystem::FT_DIR, zypp::filesystem::FT_NOT_AVAIL, getFile(), zypp::iostr::getline(), localPath(), url(), and ZYPP_THROW.
bool zypp::media::MediaHandler::downloads | ( | ) | const [inline] |
Hint if files are downloaded or not.
Definition at line 496 of file MediaHandler.h.
References _does_download.
Referenced by zypp::media::MediaAccess::downloads().
std::string zypp::media::MediaHandler::protocol | ( | ) | const [inline] |
Protocol hint for MediaAccess.
Definition at line 501 of file MediaHandler.h.
References _url, and zypp::Url::getScheme().
Referenced by zypp::media::MediaAccess::dumpOn(), and zypp::media::MediaAccess::protocol().
Url zypp::media::MediaHandler::url | ( | ) | const [inline] |
Url used.
Definition at line 506 of file MediaHandler.h.
References _url.
Referenced by zypp::media::MediaNFS::attachTo(), zypp::media::MediaISO::attachTo(), zypp::media::MediaDISK::attachTo(), zypp::media::MediaDIR::attachTo(), zypp::media::MediaCurl::attachTo(), zypp::media::MediaCIFS::attachTo(), zypp::media::MediaCD::attachTo(), dirInfo(), doesFileExist(), zypp::media::MediaCurl::doGetDoesFileExist(), zypp::media::MediaCurl::doGetFileCopy(), zypp::media::MediaCurl::doGetFileCopyFile(), zypp::media::MediaCurl::evaluateCurlCode(), getDir(), getDirectoryYast(), getDirInfo(), getDoesFileExist(), getFile(), zypp::media::operator<<(), provideDir(), provideDirTree(), provideFile(), provideFileCopy(), and zypp::media::MediaAccess::url().
void zypp::media::MediaHandler::attach | ( | bool | next | ) |
Use concrete handler to attach the media.
next | try next available device in turn until end of device list is reached (for media which are accessible through multiple devices like cdroms). |
MediaException |
Definition at line 635 of file MediaHandler.cc.
References attachPointHint(), attachTo(), isAttached(), MIL, zypp::media::AttachPoint::path, removeAttachPoint(), setAttachPoint(), setMediaSource(), zypp::media::AttachPoint::temp, and ZYPP_RETHROW.
Referenced by zypp::media::MediaAccess::attach().
virtual bool zypp::media::MediaHandler::isAttached | ( | ) | const [inline, virtual] |
True if media is attached.
Reimplemented in zypp::media::MediaCD, zypp::media::MediaCIFS, zypp::media::MediaDISK, zypp::media::MediaISO, and zypp::media::MediaNFS.
Definition at line 523 of file MediaHandler.h.
References _mediaSource.
Referenced by attach(), dirInfo(), disconnect(), doesFileExist(), zypp::media::MediaAccess::isAttached(), zypp::media::operator<<(), provideDir(), provideDirTree(), provideFile(), provideFileCopy(), and release().
Pathname zypp::media::MediaHandler::localRoot | ( | ) | const |
Return the local directory that corresponds to medias url, no matter if media isAttached or not.
Files requested will be available at 'localRoot() + filename' or better 'localPath( filename )'.
Returns empty pathname if E_bad_attachpoint
Definition at line 234 of file MediaHandler.cc.
References _attachPoint, and _relativeRoot.
Referenced by localPath(), zypp::media::MediaAccess::localRoot(), zypp::media::operator<<(), and releasePath().
Pathname zypp::media::MediaHandler::localPath | ( | const Pathname & | pathname | ) | const |
Files provided will be available at 'localPath(filename)'.
Returns empty pathname if E_bad_attachpoint
Definition at line 666 of file MediaHandler.cc.
References localRoot().
Referenced by getDir(), zypp::media::MediaCurl::getDir(), getDirectoryYast(), getDirInfo(), getDoesFileExist(), getFile(), zypp::media::MediaCurl::getFile(), zypp::media::MediaAria2c::getFile(), getFileCopy(), zypp::media::MediaAccess::localPath(), and releasePath().
void zypp::media::MediaHandler::disconnect | ( | ) |
Use concrete handler to isconnect media.
This is useful for media which e.g. holds open a connection to a server like FTP. After calling disconnect() the media object still is valid and files are present.
After calling disconnect() it's not possible to call provideFile() or provideDir() anymore.
MediaException |
Definition at line 689 of file MediaHandler.cc.
References disconnectFrom(), isAttached(), and MIL.
Referenced by zypp::media::MediaAccess::disconnect(), and zypp::media::MediaCurl::releaseFrom().
void zypp::media::MediaHandler::release | ( | const std::string & | ejectDev = "" |
) |
Use concrete handler to release the media.
eject | Device to physically eject. None if empty. |
MediaException |
Definition at line 706 of file MediaHandler.cc.
References _mediaSource, DBG, forceEject(), zypp::media::MediaManager::forceReleaseShared(), isAttached(), MIL, releaseFrom(), removeAttachPoint(), zypp::RW_pointer< _D, _Traits >::reset(), setAttachPoint(), setMediaSource(), zypp::RW_pointer< _D, _Traits >::unique(), zypp::RW_pointer< _D, _Traits >::use_count(), and ZYPP_RETHROW.
Referenced by zypp::media::MediaAccess::close(), zypp::media::MediaAccess::release(), zypp::media::MediaAria2c::~MediaAria2c(), zypp::media::MediaCD::~MediaCD(), zypp::media::MediaCIFS::~MediaCIFS(), zypp::media::MediaCurl::~MediaCurl(), zypp::media::MediaDIR::~MediaDIR(), zypp::media::MediaDISK::~MediaDISK(), zypp::media::MediaISO::~MediaISO(), zypp::media::MediaNFS::~MediaNFS(), and zypp::media::MediaPlugin::~MediaPlugin().
void zypp::media::MediaHandler::provideFile | ( | Pathname | filename | ) | const |
Use concrete handler to provide file denoted by path below 'localRoot'.
Filename is interpreted relative to the attached url and a path prefix is preserved.
MediaException |
Definition at line 1005 of file MediaHandler.cc.
References DBG, getFile(), INT, isAttached(), url(), and ZYPP_THROW.
Referenced by zypp::media::MediaAccess::provideFile().
void zypp::media::MediaHandler::provideFileCopy | ( | Pathname | srcFilename, | |
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.
Media must be attached before by callee.
srcFilename | Filename of source file on the media | |
targetFilename | Filename for the target in the file system |
MediaException |
Definition at line 992 of file MediaHandler.cc.
References DBG, getFileCopy(), INT, isAttached(), url(), and ZYPP_THROW.
Referenced by zypp::media::MediaAccess::getFile().
void zypp::media::MediaHandler::provideDir | ( | Pathname | dirname | ) | const |
Use concrete handler to provide directory denoted by path below 'localRoot' (not recursive!).
dirname is interpreted relative to the attached url and a path prefix is preserved.
MediaException |
Definition at line 1025 of file MediaHandler.cc.
References getDir(), INT, isAttached(), MIL, url(), and ZYPP_THROW.
Referenced by zypp::media::MediaAccess::provideDir().
void zypp::media::MediaHandler::provideDirTree | ( | Pathname | dirname | ) | const |
Use concrete handler to provide directory tree denoted by path below 'localRoot' (recursive!!).
dirname is interpreted relative to the attached url and a path prefix is preserved.
MediaException |
Definition at line 1044 of file MediaHandler.cc.
References getDir(), INT, isAttached(), MIL, url(), and ZYPP_THROW.
Referenced by zypp::media::MediaAccess::provideDirTree().
void zypp::media::MediaHandler::releaseFile | ( | const Pathname & | filename | ) | const [inline] |
Remove filename below localRoot IFF handler downloads files to the local filesystem.
Never remove anything from media.
MediaException |
Definition at line 617 of file MediaHandler.h.
References releasePath().
Referenced by zypp::media::MediaAccess::releaseFile().
void zypp::media::MediaHandler::releaseDir | ( | const Pathname & | dirname | ) | const [inline] |
Remove directory tree below localRoot IFF handler downloads files to the local filesystem.
Never remove anything from media.
MediaException |
Definition at line 626 of file MediaHandler.h.
References releasePath().
Referenced by zypp::media::MediaAccess::releaseDir().
void zypp::media::MediaHandler::releasePath | ( | Pathname | pathname | ) | const |
Remove pathname below localRoot IFF handler downloads files to the local filesystem.
Never remove anything from media.
If pathname denotes a directory it is recursively removed. If pathname is empty or '/' everything below the localRoot is recursively removed. If pathname denotes a file it is unlinked.
MediaException |
Definition at line 1063 of file MediaHandler.cc.
References _attachPoint, _does_download, zypp::filesystem::clean_dir(), localPath(), localRoot(), zypp::filesystem::recursive_rmdir(), and zypp::filesystem::unlink().
Referenced by releaseDir(), releaseFile(), and zypp::media::MediaAccess::releasePath().
void zypp::media::MediaHandler::dirInfo | ( | std::list< std::string > & | retlist, | |
const Pathname & | dirname, | |||
bool | dots = true | |||
) | const |
Return content of directory on media via retlist.
If dots is false entries starting with '.' are not reported.
The request is forwarded to the concrete handler, which may atempt to retieve the content e.g. via 'readdir'
Caution: This is not supported by all media types. Be prepared to handle E_not_supported_by_media.
MediaException |
Definition at line 1089 of file MediaHandler.cc.
References getDirInfo(), INT, isAttached(), MIL, url(), and ZYPP_THROW.
Referenced by zypp::media::MediaAccess::dirInfo().
void zypp::media::MediaHandler::dirInfo | ( | filesystem::DirContent & | retlist, | |
const Pathname & | dirname, | |||
bool | dots = true | |||
) | const |
Basically the same as dirInfo above.
The content 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.
Caution: This is not supported by all media types. Be prepared to handle E_not_supported_by_media.
MediaException |
Definition at line 1111 of file MediaHandler.cc.
References getDirInfo(), INT, isAttached(), MIL, url(), and ZYPP_THROW.
bool zypp::media::MediaHandler::doesFileExist | ( | const Pathname & | filename | ) | const |
check if a file exists
Asserted that url is a file and not a dir.
MediaException |
Definition at line 1133 of file MediaHandler.cc.
References getDoesFileExist(), INT, isAttached(), MIL, url(), and ZYPP_THROW.
Referenced by zypp::media::MediaAccess::doesFileExist().
bool zypp::media::MediaHandler::hasMoreDevices | ( | ) | [virtual] |
Check if the media has one more device available for attach(true).
Reimplemented in zypp::media::MediaCD.
Definition at line 1383 of file MediaHandler.cc.
Referenced by zypp::media::MediaAccess::hasMoreDevices().
void zypp::media::MediaHandler::getDetectedDevices | ( | std::vector< std::string > & | devices, | |
unsigned int & | index | |||
) | const [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).
devices | vector to load with the device names | |
index | index of the currently used device in the devices vector |
Reimplemented in zypp::media::MediaCD.
Definition at line 1388 of file MediaHandler.cc.
References DBG.
Referenced by zypp::media::MediaAccess::getDetectedDevices().
friend class MediaAccess [friend] |
MediaAccess (MediaManager) needs access to the attachedMedia() function to deliver a shared media source and its attach point to the media manager and then to other media handler instances.
Further, is needs to be able to forward the dependsOnParent() and resetParentId() functions to the media manager.
Definition at line 121 of file MediaHandler.h.
std::ostream& operator<< | ( | std::ostream & | str, | |
const MediaHandler & | obj | |||
) | [friend] |
Pathname zypp::media::MediaHandler::_attachPrefix [static, private] |
MediaSourceRef zypp::media::MediaHandler::_mediaSource [mutable, private] |
The attached media source description reference.
Definition at line 67 of file MediaHandler.h.
Referenced by attachedMedia(), checkAttached(), isAttached(), isSharedMedia(), mediaSourceName(), release(), removeAttachPoint(), and setMediaSource().
This is where the media will be actually attached ("mounted").
All files are provided bellow this + _relativeRoot directory.
Definition at line 73 of file MediaHandler.h.
Referenced by attachedMedia(), attachPoint(), localRoot(), releasePath(), removeAttachPoint(), and setAttachPoint().
The user provided attach preferred point.
It may contain following values:
"", true => create temporary attach point bellow of _attachPrefix or a built-in default and remove it if not needed any more.
dir, false => user specified attach point (not removed)
Definition at line 85 of file MediaHandler.h.
Referenced by attachPointHint().
Pathname zypp::media::MediaHandler::_relativeRoot [private] |
The relative root directory of the data on the media.
See also localRoot() and urlpath_below_attachpoint_r constructor argument.
Definition at line 92 of file MediaHandler.h.
Referenced by localRoot().
bool zypp::media::MediaHandler::_does_download [private] |
True if concrete handler downloads files to the local filesystem.
If true releaseFile/Dir will delete them.
Definition at line 98 of file MediaHandler.h.
Referenced by downloads(), and releasePath().
time_t zypp::media::MediaHandler::_attach_mtime [mutable, private] |
timestamp of the the last attach verification
Definition at line 101 of file MediaHandler.h.
Referenced by checkAttached().
const Url zypp::media::MediaHandler::_url [protected] |
Url to handle.
Definition at line 107 of file MediaHandler.h.
Referenced by zypp::media::MediaNFS::attachTo(), zypp::media::MediaISO::attachTo(), zypp::media::MediaDISK::attachTo(), zypp::media::MediaCurl::attachTo(), zypp::media::MediaCIFS::attachTo(), zypp::media::MediaCD::attachTo(), zypp::media::MediaCIFS::authenticate(), zypp::media::MediaCurl::checkProtocol(), zypp::media::MediaCurl::doGetDoesFileExist(), zypp::media::MediaCurl::doGetFileCopy(), zypp::media::MediaCurl::doGetFileCopyFile(), zypp::media::MediaCurl::evaluateCurlCode(), zypp::media::MediaISO::findUnusedLoopDevice(), zypp::media::MediaCD::forceEject(), zypp::media::MediaCD::getDetectedDevices(), zypp::media::MediaAria2c::getFileCopy(), zypp::media::MediaCurl::getFileUrl(), zypp::media::MediaCD::MediaCD(), zypp::media::MediaDISK::MediaDISK(), MediaHandler(), zypp::media::MediaISO::MediaISO(), protocol(), zypp::media::MediaCurl::setupEasy(), and url().
MediaAccessId zypp::media::MediaHandler::_parentId [protected] |
Access Id of media handler we depend on.
Definition at line 112 of file MediaHandler.h.
Referenced by zypp::media::MediaISO::attachTo(), dependsOnParent(), zypp::media::MediaISO::MediaISO(), zypp::media::MediaISO::releaseFrom(), resetParentId(), and zypp::media::MediaISO::~MediaISO().