#include <MediaSetAccess.h>
Public Member Functions | |
| MediaSetAccess (const Url &url, const Pathname &prefered_attach_point="") | |
| Creates a callback enabled media access for specified url. | |
| ~MediaSetAccess () | |
| void | setVerifier (unsigned media_nr, media::MediaVerifierRef verifier) |
| Sets a MediaVerifier verifier for given media number. | |
| Pathname | provideFile (const OnMediaLocation &on_media_file) |
| Provides a file from a media location. | |
| Pathname | provideFile (const Pathname &file, unsigned media_nr=1) |
| Provides file from media media_nr. | |
| Pathname | provideDir (const Pathname &dir, bool recursive, unsigned media_nr=1) |
| Provides direcotry dir from media number media_nr. | |
| bool | doesFileExist (const Pathname &file, unsigned media_nr=1) |
| check if a file exists on the specified media | |
| void | release () |
| Release all attached media of this set. | |
Static Public Member Functions | |
| static Url | rewriteUrl (const Url &url_r, const media::MediaNr medianr) |
| Replaces media number in specified url with given medianr. | |
Protected Member Functions | |
| Pathname | provideFileInternal (const Pathname &file, unsigned media_nr, bool checkonly, bool cached) |
| media::MediaAccessId | getMediaAccessId (media::MediaNr medianr) |
| virtual std::ostream & | dumpOn (std::ostream &str) const |
| Overload to realize std::ostream & operator<<. | |
Private Types | |
| typedef std::map < media::MediaNr, media::MediaAccessId > | MediaMap |
| typedef std::map < media::MediaNr, media::MediaVerifierRef > | VerifierMap |
Private Attributes | |
| Url | _url |
| Media or media set URL. | |
| Pathname | _prefAttachPoint |
| Prefered mount point. | |
| MediaMap | _medias |
| Mapping between media number and Media Access ID. | |
| VerifierMap | _verifiers |
| Mapping between media number and corespondent verifier. | |
Friends | |
| std::ostream & | operator<< (std::ostream &str, const MediaSetAccess &obj) |
| Stream output. | |
This is provided as a means to handle CD or DVD sets accessible through dir, iso, nfs or other URL schemes other than cd/dvd (see MediaManager for info on different implemented media backends). Currently it handles URLs containing cdN, CDN, dvdN, and DVDN strings, where N is the number of particular media in the set.
Examples:
"iso:/?iso=/path/to/iso/images/openSUSE-10.3-Alpha2plus-DVD-x86_64-DVD1.iso" "dir:/path/to/cdset/sources/openSUSE-10.3/Alpha2plus/CD1"
MediaSetAccess accesses files on desired media by rewriting the original URL, replacing the digit (usually) 1 with requested media number and uses MediaManager to get the files from the new URL.
Additionaly, each media number can be assined a media verifier which checks if the media we are trying to access is the desired one. See MediaVerifierBase for more info.
Code example:
Url url("dir:/path/to/cdset/sources/openSUSE-10.3/Alpha2plus/CD1"); MediaSetAccess access(url); access.setVerifier(1, media1VerifierRef); access.setVerifier(2, media2VerifierRef); Pathname file1 = "/some/file/on/media1"; access.provideFile(1, file1); Pathname file2 = "/some/file/on/media2"; access.provideFile(2, file1);
Definition at line 76 of file MediaSetAccess.h.
typedef std::map<media::MediaNr, media::MediaAccessId> zypp::MediaSetAccess::MediaMap [private] |
Definition at line 181 of file MediaSetAccess.h.
typedef std::map<media::MediaNr, media::MediaVerifierRef > zypp::MediaSetAccess::VerifierMap [private] |
Definition at line 182 of file MediaSetAccess.h.
| zypp::MediaSetAccess::MediaSetAccess | ( | const Url & | url, | |
| const Pathname & | prefered_attach_point = "" | |||
| ) |
| zypp::MediaSetAccess::~MediaSetAccess | ( | ) |
| void zypp::MediaSetAccess::setVerifier | ( | unsigned | media_nr, | |
| media::MediaVerifierRef | verifier | |||
| ) |
Sets a MediaVerifier verifier for given media number.
Definition at line 49 of file MediaSetAccess.cc.
References _medias, _verifiers, and zypp::media::MediaManager::addVerifier().
| Pathname zypp::MediaSetAccess::provideFile | ( | const OnMediaLocation & | on_media_file | ) |
Provides a file from a media location.
| on_media_file | location of the file on media |
| MediaException | if a problem occurs, see media::MediaManager::provideFile() |
Definition at line 81 of file MediaSetAccess.cc.
References zypp::OnMediaLocation::filename(), and zypp::OnMediaLocation::medianr().
Referenced by zypp::readRepoFile(), zypp::Fetcher::Impl::start(), zypp::repo::yum::Downloader::status(), and zypp::repo::susetags::Downloader::status().
| Pathname zypp::MediaSetAccess::provideFile | ( | const Pathname & | file, | |
| unsigned | media_nr = 1 | |||
| ) |
Provides file from media media_nr.
| MediaException | if a problem occurs, see media::MediaManager::provideFile() |
Definition at line 87 of file MediaSetAccess.cc.
References provideFileInternal().
| Pathname zypp::MediaSetAccess::provideDir | ( | const Pathname & | dir, | |
| bool | recursive, | |||
| unsigned | media_nr = 1 | |||
| ) |
Provides direcotry dir from media number media_nr.
| dir | path to the directory relative to media URL | |
| recursive | whether to provide the whole directory subtree | |
| media_nr | the media number in the media set |
| MediaException | if a problem occurs, see media::MediaManager::provideDir() and media::MediaManager::provideDirTree() |
Definition at line 308 of file MediaSetAccess.cc.
References _medias, _url, zypp::media::MediaChangeReport::ABORT, zypp::Exception::asUserString(), zypp::media::MediaManager::attachDesiredMedia(), zypp::media::MediaChangeReport::CHANGE_URL, zypp::media::MediaManager::close(), DBG, zypp::media::MediaChangeReport::EJECT, ERR, getMediaAccessId(), zypp::media::MediaChangeReport::INVALID, zypp::media::MediaManager::isAttached(), zypp::media::MediaManager::localPath(), zypp::media::MediaChangeReport::NOT_FOUND, zypp::media::MediaManager::provideDir(), zypp::media::MediaManager::provideDirTree(), zypp::media::MediaManager::release(), zypp::media::MediaManager::releaseAll(), report, zypp::media::MediaChangeReport::RETRY, zypp::media::MediaChangeReport::WRONG, ZYPP_CAUGHT, and ZYPP_RETHROW.
| bool zypp::MediaSetAccess::doesFileExist | ( | const Pathname & | file, | |
| unsigned | media_nr = 1 | |||
| ) |
check if a file exists on the specified media
| file | file to check | |
| media_nr | Media number |
Definition at line 92 of file MediaSetAccess.cc.
References _medias, _url, zypp::media::MediaChangeReport::ABORT, zypp::Exception::asUserString(), zypp::media::MediaManager::attachDesiredMedia(), zypp::media::MediaChangeReport::CHANGE_URL, zypp::media::MediaManager::close(), DBG, zypp::media::MediaManager::doesFileExist(), zypp::media::MediaChangeReport::EJECT, getMediaAccessId(), zypp::media::MediaChangeReport::IGNORE, zypp::media::MediaChangeReport::INVALID, zypp::media::MediaManager::isAttached(), MIL, zypp::media::MediaChangeReport::NOT_FOUND, zypp::media::MediaManager::release(), zypp::media::MediaManager::releaseAll(), zypp::Exception::remember(), report, zypp::media::MediaChangeReport::RETRY, zypp::media::MediaChangeReport::WRONG, ZYPP_CAUGHT, ZYPP_RETHROW, and ZYPP_THROW.
Referenced by zypp::repo::yum::Downloader::download(), zypp::repo::susetags::Downloader::download(), and zypp::RepoManager::probe().
| void zypp::MediaSetAccess::release | ( | ) |
Release all attached media of this set.
| MediaNotOpenException | for invalid access IDs. |
Definition at line 516 of file MediaSetAccess.cc.
References _medias, DBG, and zypp::media::MediaManager::release().
Referenced by ~MediaSetAccess().
| Url zypp::MediaSetAccess::rewriteUrl | ( | const Url & | url_r, | |
| const media::MediaNr | medianr | |||
| ) | [static] |
Replaces media number in specified url with given medianr.
Media number in the URL is searched for with regex "^(.*(cd|dvd))([0-9]+)(\\.iso)$" for iso scheme and with "^(.*(cd|dvd))([0-9]+)(/?)$" for other schemes.
For cd and dvd scheme it returns the original URL, as well as for URL which do not match the above regexes.
| url_r | original URL | |
| medianr | requested media number |
Definition at line 473 of file MediaSetAccess.cc.
References DBG, zypp::Url::getPathName(), zypp::Url::getQueryParam(), zypp::Url::getScheme(), zypp::str::regex::icase, zypp::str::numstring(), zypp::str::regex_match(), zypp::Url::setPathName(), zypp::Url::setQueryParam(), and url.
Referenced by getMediaAccessId().
| Pathname zypp::MediaSetAccess::provideFileInternal | ( | const Pathname & | file, | |
| unsigned | media_nr, | |||
| bool | checkonly, | |||
| bool | cached | |||
| ) | [protected] |
Definition at line 199 of file MediaSetAccess.cc.
References _medias, _url, zypp::media::MediaChangeReport::ABORT, zypp::Exception::asUserString(), zypp::media::MediaManager::attachDesiredMedia(), zypp::media::MediaChangeReport::CHANGE_URL, zypp::media::MediaManager::close(), DBG, zypp::media::MediaChangeReport::EJECT, getMediaAccessId(), zypp::media::MediaChangeReport::IGNORE, zypp::media::MediaChangeReport::INVALID, zypp::media::MediaManager::isAttached(), zypp::media::MediaManager::localPath(), MIL, zypp::media::MediaChangeReport::NOT_FOUND, zypp::media::MediaManager::provideFile(), zypp::media::MediaManager::release(), zypp::media::MediaManager::releaseAll(), zypp::Exception::remember(), report, zypp::media::MediaChangeReport::RETRY, zypp::media::MediaChangeReport::WRONG, ZYPP_CAUGHT, ZYPP_RETHROW, and ZYPP_THROW.
Referenced by provideFile().
| media::MediaAccessId zypp::MediaSetAccess::getMediaAccessId | ( | media::MediaNr | medianr | ) | [protected] |
Definition at line 432 of file MediaSetAccess.cc.
References _medias, _prefAttachPoint, _url, _verifiers, zypp::media::MediaManager::addVerifier(), zypp::media::MediaManager::delVerifier(), zypp::media::MediaManager::open(), rewriteUrl(), url, WAR, and ZYPP_CAUGHT.
Referenced by doesFileExist(), provideDir(), and provideFileInternal().
| std::ostream & zypp::MediaSetAccess::dumpOn | ( | std::ostream & | str | ) | const [protected, virtual] |
Overload to realize std::ostream & operator<<.
Reimplemented from zypp::base::ReferenceCounted.
Definition at line 524 of file MediaSetAccess.cc.
References _prefAttachPoint, and _url.
| std::ostream & operator<< | ( | std::ostream & | str, | |
| const MediaSetAccess & | obj | |||
| ) | [friend] |
Url zypp::MediaSetAccess::_url [private] |
Media or media set URL.
Definition at line 171 of file MediaSetAccess.h.
Referenced by doesFileExist(), dumpOn(), getMediaAccessId(), provideDir(), and provideFileInternal().
Pathname zypp::MediaSetAccess::_prefAttachPoint [private] |
Prefered mount point.
MediaHandler::_attachPoint
Definition at line 179 of file MediaSetAccess.h.
Referenced by dumpOn(), and getMediaAccessId().
MediaMap zypp::MediaSetAccess::_medias [private] |
Mapping between media number and Media Access ID.
Definition at line 185 of file MediaSetAccess.h.
Referenced by doesFileExist(), getMediaAccessId(), provideDir(), provideFileInternal(), release(), and setVerifier().
VerifierMap zypp::MediaSetAccess::_verifiers [private] |
Mapping between media number and corespondent verifier.
Definition at line 187 of file MediaSetAccess.h.
Referenced by getMediaAccessId(), and setVerifier().
1.5.3