libzypp
10.5.0
|
Handle access to a medium. More...
#include <MediaAccess.h>
Classes | |
class | FileProvider |
Helper class that provides file on construction and cleans up on destruction. More... | |
Public Types | |
typedef intrusive_ptr < MediaAccess > | Ptr |
typedef intrusive_ptr< const MediaAccess > | constPtr |
Public Member Functions | |
MediaAccess () | |
constructor | |
void | open (const Url &url, const Pathname &preferred_attach_point="") |
open url. | |
bool | isOpen () const |
True if media is open. | |
bool | downloads () const |
Hint if files are downloaded or not. | |
std::string | protocol () const |
Used Protocol if media is opened, otherwise 'unknown'. | |
Url | url () const |
Url if media is opened, otherwise empty. | |
void | close () |
close url | |
void | attach (bool next=false) |
Use concrete handler to attach the media. | |
bool | isAttached () const |
True if media is attached. | |
bool | hasMoreDevices () const |
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. | |
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 |
Short for 'localRoot() + pathname', but returns an empty pathname if media is not open. | |
void | disconnect () |
Use concrete handler to disconnect the media. | |
void | release (const std::string &ejectDev="") |
Use concrete handler to release the media. | |
void | provideFile (const Pathname &filename) const |
Use concrete handler to provide file denoted by path below 'attach point'. | |
void | releaseFile (const Pathname &filename) const |
Remove filename below attach point IFF handler downloads files to the local filesystem. | |
void | provideDir (const Pathname &dirname) const |
Use concrete handler to provide directory denoted by path below 'attach point' (not recursive!). | |
void | provideDirTree (const Pathname &dirname) const |
Use concrete handler to provide directory tree denoted by path below 'attach point' (recursive!!). | |
void | releaseDir (const Pathname &dirname) const |
Remove directory tree below attach point IFF handler downloads files to the local filesystem. | |
void | releasePath (const Pathname &pathname) const |
Remove pathname below attach point IFF handler downloads files to the local filesystem. | |
void | setDeltafile (const Pathname &filename) const |
set a deltafile to be used in the next download | |
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 | ~MediaAccess () |
Destructor. | |
virtual std::ostream & | dumpOn (std::ostream &str) const |
Overload to realize std::ostream & operator<<. | |
void | getFile (const Url &from, const Pathname &to) |
Get file from location at specified by URL and copy it to destination. | |
Static Public Member Functions | |
static ZYPP_DEPRECATED bool | downloads (const Url &url) |
static ZYPP_DEPRECATED bool | canBeVolatile (const Url &url) |
Private Member Functions | |
AttachedMedia | attachedMedia () const |
bool | isSharedMedia () const |
void | resetParentId () |
bool | dependsOnParent () const |
bool | dependsOnParent (MediaAccessId parentId, bool exactIdMatch) const |
Private Attributes | |
MediaHandler * | _handler |
handler for 'physical' media == 0 if not open | |
Static Private Attributes | |
static const Pathname | _noPath |
Friends | |
class | MediaManager |
class | MediaManager_Impl |
Handle access to a medium.
The concrete MediaHandler for a certain url is created on open and deleted on .
The inteface here basically checks whether the handler exists, then forwards the request to MediaHandler.
Definition at line 50 of file MediaAccess.h.
typedef intrusive_ptr<MediaAccess> zypp::media::MediaAccess::Ptr |
Definition at line 53 of file MediaAccess.h.
typedef intrusive_ptr<const MediaAccess> zypp::media::MediaAccess::constPtr |
Definition at line 54 of file MediaAccess.h.
zypp::media::MediaAccess::MediaAccess | ( | ) |
constructor
Definition at line 54 of file MediaAccess.cc.
zypp::media::MediaAccess::~MediaAccess | ( | ) | [virtual] |
Destructor.
Definition at line 60 of file MediaAccess.cc.
AttachedMedia zypp::media::MediaAccess::attachedMedia | ( | ) | const [private] |
Definition at line 70 of file MediaAccess.cc.
bool zypp::media::MediaAccess::isSharedMedia | ( | ) | const [private] |
Definition at line 77 of file MediaAccess.cc.
void zypp::media::MediaAccess::resetParentId | ( | ) | [private] |
Definition at line 84 of file MediaAccess.cc.
bool zypp::media::MediaAccess::dependsOnParent | ( | ) | const [private] |
Definition at line 90 of file MediaAccess.cc.
bool zypp::media::MediaAccess::dependsOnParent | ( | MediaAccessId | parentId, |
bool | exactIdMatch | ||
) | const [private] |
Definition at line 96 of file MediaAccess.cc.
void zypp::media::MediaAccess::open | ( | const Url & | url, |
const Pathname & | preferred_attach_point = "" |
||
) |
open url.
If preferred_attach_point is given, try to use it as attach point.
Caution: The medium can choose a different attach point. Only getAttachPoint() knows the real attach point.
MediaException |
Definition at line 105 of file MediaAccess.cc.
bool zypp::media::MediaAccess::isOpen | ( | ) | const [inline] |
True if media is open.
Definition at line 100 of file MediaAccess.h.
bool zypp::media::MediaAccess::downloads | ( | ) | const |
Hint if files are downloaded or not.
Definition at line 248 of file MediaAccess.cc.
static ZYPP_DEPRECATED bool zypp::media::MediaAccess::downloads | ( | const Url & | url | ) | [inline, static] |
Definition at line 110 of file MediaAccess.h.
static ZYPP_DEPRECATED bool zypp::media::MediaAccess::canBeVolatile | ( | const Url & | url | ) | [inline, static] |
Definition at line 115 of file MediaAccess.h.
std::string zypp::media::MediaAccess::protocol | ( | ) | const |
Used Protocol if media is opened, otherwise 'unknown'.
Definition at line 239 of file MediaAccess.cc.
Url zypp::media::MediaAccess::url | ( | ) | const |
Url if media is opened, otherwise empty.
Definition at line 259 of file MediaAccess.cc.
void zypp::media::MediaAccess::close | ( | ) |
void zypp::media::MediaAccess::attach | ( | bool | next = false | ) |
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 293 of file MediaAccess.cc.
bool zypp::media::MediaAccess::isAttached | ( | ) | const |
True if media is attached.
MediaException |
Definition at line 303 of file MediaAccess.cc.
bool zypp::media::MediaAccess::hasMoreDevices | ( | ) | const |
Definition at line 309 of file MediaAccess.cc.
void zypp::media::MediaAccess::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 |
Definition at line 316 of file MediaAccess.cc.
Pathname zypp::media::MediaAccess::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 )'.
If media is not open an empty pathname is returned.
Definition at line 334 of file MediaAccess.cc.
Pathname zypp::media::MediaAccess::localPath | ( | const Pathname & | pathname | ) | const |
Short for 'localRoot() + pathname', but returns an empty pathname if media is not open.
Files provided will be available at 'localPath(filename)'.
Definition at line 345 of file MediaAccess.cc.
void zypp::media::MediaAccess::disconnect | ( | ) |
Use concrete handler to disconnect the 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 354 of file MediaAccess.cc.
void zypp::media::MediaAccess::release | ( | const std::string & | ejectDev = "" | ) |
Use concrete handler to release the media.
ejectDev | Device to eject. None if empty. |
MediaException |
Definition at line 364 of file MediaAccess.cc.
void zypp::media::MediaAccess::provideFile | ( | const Pathname & | filename | ) | const |
Use concrete handler to provide file denoted by path below 'attach point'.
Filename is interpreted relative to the attached url and a path prefix is preserved.
cached | If cached is set to true, the function checks, if the file already exists and doesn't download it again if it does. Currently only the existence is checked, no other file attributes. |
checkonly | If this and 'cached' are set to true only the existence of the file is checked but it's not downloaded. If 'cached' is unset an errer is returned always. |
MediaException |
Definition at line 377 of file MediaAccess.cc.
void zypp::media::MediaAccess::releaseFile | ( | const Pathname & | filename | ) | const |
Remove filename below attach point IFF handler downloads files to the local filesystem.
Never remove anything from media.
MediaException |
Definition at line 397 of file MediaAccess.cc.
void zypp::media::MediaAccess::provideDir | ( | const Pathname & | dirname | ) | const |
Use concrete handler to provide directory denoted by path below 'attach point' (not recursive!).
'dirname' is interpreted relative to the attached url and a path prefix is preserved.
MediaException |
Definition at line 410 of file MediaAccess.cc.
void zypp::media::MediaAccess::provideDirTree | ( | const Pathname & | dirname | ) | const |
Use concrete handler to provide directory tree denoted by path below 'attach point' (recursive!!).
'dirname' is interpreted relative to the attached url and a path prefix is preserved.
MediaException |
Definition at line 420 of file MediaAccess.cc.
void zypp::media::MediaAccess::releaseDir | ( | const Pathname & | dirname | ) | const |
Remove directory tree below attach point IFF handler downloads files to the local filesystem.
Never remove anything from media.
MediaException |
Definition at line 430 of file MediaAccess.cc.
void zypp::media::MediaAccess::releasePath | ( | const Pathname & | pathname | ) | const |
Remove pathname below attach point 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 attachpoint is recursively removed.
MediaException |
Definition at line 439 of file MediaAccess.cc.
void zypp::media::MediaAccess::setDeltafile | ( | const Pathname & | filename | ) | const |
set a deltafile to be used in the next download
Definition at line 387 of file MediaAccess.cc.
void zypp::media::MediaAccess::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 449 of file MediaAccess.cc.
void zypp::media::MediaAccess::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 462 of file MediaAccess.cc.
bool zypp::media::MediaAccess::doesFileExist | ( | const Pathname & | filename | ) | const |
check if a file exists
Asserted that url is a file and not a dir.
MediaException |
Definition at line 475 of file MediaAccess.cc.
std::ostream & zypp::media::MediaAccess::dumpOn | ( | std::ostream & | str | ) | const [virtual] |
Overload to realize std::ostream & operator<<.
Reimplemented from zypp::base::ReferenceCounted.
Definition at line 485 of file MediaAccess.cc.
void zypp::media::MediaAccess::getFile | ( | const Url & | from, |
const Pathname & | to | ||
) |
Get file from location at specified by URL and copy it to destination.
from | Source URL |
to | Destination file name |
MediaException |
Definition at line 494 of file MediaAccess.cc.
friend class MediaManager [friend] |
Definition at line 66 of file MediaAccess.h.
friend class MediaManager_Impl [friend] |
Definition at line 67 of file MediaAccess.h.
const Pathname zypp::media::MediaAccess::_noPath [static, private] |
Definition at line 58 of file MediaAccess.h.
MediaHandler* zypp::media::MediaAccess::_handler [private] |
handler for 'physical' media == 0 if not open
Definition at line 64 of file MediaAccess.h.