zypp::MediaSetAccess Class Reference

Media access layer responsible for handling files distributed on a set of media. More...

#include <MediaSetAccess.h>

Inheritance diagram for zypp::MediaSetAccess:
[legend]

List of all members.

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.


Detailed Description

Media access layer responsible for handling files distributed on a set of media.

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.


Member Typedef Documentation

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.


Constructor & Destructor Documentation

zypp::MediaSetAccess::MediaSetAccess ( const Url url,
const Pathname &  prefered_attach_point = "" 
)

Creates a callback enabled media access for specified url.

Parameters:
url 
prefered_attach_point Prefered attach (mount) point. Use, if you want to mount the media to a specific directory.

Definition at line 31 of file MediaSetAccess.cc.

References MIL.

zypp::MediaSetAccess::~MediaSetAccess (  ) 

Definition at line 43 of file MediaSetAccess.cc.

References release().


Member Function Documentation

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.

Parameters:
on_media_file location of the file on media
Returns:
local pathname of the requested file
Exceptions:
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.

Parameters:
file path to the file relative to media URL
media_nr the media number in the media set
Returns:
local pathname of the requested file
Exceptions:
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.

Parameters:
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
Returns:
local pathname of the requested directory
Exceptions:
MediaException if a problem occurs, see media::MediaManager::provideDir() and media::MediaManager::provideDirTree()

Todo:
do we need replacement for this at all?

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

Parameters:
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.

Exceptions:
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.

Parameters:
url_r original URL
medianr requested media number
Returns:
rewritten URL if applicable, the original URL otherwise

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.


Friends And Related Function Documentation

std::ostream & operator<< ( std::ostream &  str,
const MediaSetAccess obj 
) [friend]

Stream output.

Definition at line 192 of file MediaSetAccess.h.


Member Data Documentation

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.

See also:
MediaManager::open(Url,Pathname)

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().


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