zypp::media::MediaHandler Class Reference

Abstract base class for 'physical' MediaHandler like MediaCD, etc. More...

#include <MediaHandler.h>

Inheritance diagram for zypp::media::MediaHandler:

zypp::media::MediaCD zypp::media::MediaCurl zypp::media::MediaDIR zypp::media::MediaDISK zypp::media::MediaISO zypp::media::MediaNFS zypp::media::MediaSMB zypp::media::MediaCIFS List of all members.

Public Types

typedef shared_ptr< MediaHandlerPtr
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 (bool eject=false)
 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.

Static Public Member Functions

static bool setAttachPrefix (const Pathname &attach_prefix)

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 (bool eject)=0
 Call concrete handler to release the media.
virtual void forceEject ()
 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.
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)

Detailed Description

Abstract base class for 'physical' MediaHandler like MediaCD, etc.

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 43 of file MediaHandler.h.


Member Typedef Documentation

typedef shared_ptr<MediaHandler> zypp::media::MediaHandler::Ptr
 

Definition at line 47 of file MediaHandler.h.

typedef shared_ptr<const MediaHandler> zypp::media::MediaHandler::constPtr
 

Definition at line 48 of file MediaHandler.h.


Constructor & Destructor Documentation

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 72 of file MediaHandler.cc.

References _url, zypp::filesystem::Pathname::asString(), attachPointHint(), zypp::filesystem::Pathname::empty(), ERR, zypp::media::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 123 of file MediaHandler.cc.

References removeAttachPoint().


Member Function Documentation

bool zypp::media::MediaHandler::setAttachPrefix const Pathname attach_prefix  )  [static]
 

Definition at line 287 of file MediaHandler.cc.

References _attachPrefix, zypp::filesystem::Pathname::empty(), and MIL.

Referenced by zypp::media::MediaManager::setAttachPrefix().

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.

Parameters:
parentId The id of the parent handler to check against.
Returns:
true if it depends, false if not.

Definition at line 935 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]
 

Definition at line 929 of file MediaHandler.cc.

References _parentId.

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 133 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 189 of file MediaHandler.cc.

References _attachPoint.

Referenced by zypp::media::MediaCurl::MediaCurl().

void zypp::media::MediaHandler::setAttachPoint const Pathname path,
bool  temp
[protected]
 

Set a new attach point.

Parameters:
path The attach point directory path.
temp If to remove the attach point while cleanup.

Definition at line 204 of file MediaHandler.cc.

References _attachPoint, and zypp::RW_pointer< _D, _Traits >::reset().

Referenced by attach(), zypp::media::MediaCurl::MediaCurl(), MediaHandler(), and removeAttachPoint().

void zypp::media::MediaHandler::setAttachPoint const AttachPointRef ref  )  [protected]
 

Set a (shared) attach point.

Parameters:
ref New attach point reference.

Definition at line 227 of file MediaHandler.cc.

References _attachPoint, and zypp::RW_pointer< _D, _Traits >::reset().

AttachPoint zypp::media::MediaHandler::attachPointHint  )  const [protected]
 

Get the actual attach point hint.

Definition at line 259 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.

Parameters:
path The attach point directory path.
temp If to remove the attach point while cleanup.

Definition at line 244 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.

Returns:
The name of the new attach point or empty path name.

Definition at line 316 of file MediaHandler.cc.

References _attachPrefix, and zypp::filesystem::Pathname::empty().

Pathname zypp::media::MediaHandler::createAttachPoint const Pathname attach_root  )  const [protected]
 

Try to create a temporary attach point in specified root.

Parameters:
attach_root The attach root dir where to create the attach point in.
Returns:
The name of the new attach point or empty path name.

Definition at line 352 of file MediaHandler.cc.

References zypp::filesystem::Pathname::absolute(), zypp::filesystem::Pathname::empty(), and ERR.

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

Parameters:
apoint The directory to check.
Returns:
True, if the directory checks succeeded.

Reimplemented in zypp::media::MediaCurl.

Definition at line 855 of file MediaHandler.cc.

Referenced by zypp::media::MediaCurl::checkAttachPoint().

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.

Parameters:
apoint The directory to check.
empty_dir Check if the directory is empty.
writeable Check if the directory is writeable.
Returns:
True, if the directory checks succeeded.

Definition at line 862 of file MediaHandler.cc.

References zypp::filesystem::Pathname::absolute(), zypp::filesystem::Pathname::empty(), and ERR.

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.

Parameters:
path The attach point path to check.
mtab Whether to check against the mtab, too.
Returns:
True, if the path can be used as attach point.

Definition at line 413 of file MediaHandler.cc.

References zypp::media::MediaManager::isUseableAttachPoint().

std::string zypp::media::MediaHandler::mediaSourceName  )  const [inline, protected]
 

Get the media source name or an empty string.

Returns:
media source name or empty string.

Definition at line 221 of file MediaHandler.h.

References _mediaSource.

void zypp::media::MediaHandler::setMediaSource const MediaSourceRef ref  )  [protected]
 

Set new media source reference.

Parameters:
ref The new reference.

Definition at line 429 of file MediaHandler.cc.

References _mediaSource, and zypp::RW_pointer< _D, _Traits >::reset().

Referenced by attach().

AttachedMedia zypp::media::MediaHandler::findAttachedMedia const MediaSourceRef media  )  const [protected]
 

Ask the media manager if specified media source is already attached.

Definition at line 273 of file MediaHandler.cc.

AttachedMedia zypp::media::MediaHandler::attachedMedia  )  const [protected]
 

Returns the attached media.

Used by MediaManager to find other handlers using the same source.

Note:
This function increments reference counters on the mediaSource and attachPoint references it contains, for the life time of the returned object. That is, it enables a (temporary) sharing of them.
Returns:
The AttachedMedia struct containing (shared) references to media source and attach point.

Definition at line 445 of file MediaHandler.cc.

References _attachPoint, and _mediaSource.

Referenced by zypp::media::MediaAccess::attachedMedia(), checkAttached(), and forceRelaseAllMedia().

bool zypp::media::MediaHandler::isSharedMedia  )  const [protected]
 

Returns a hint if the media is shared or not.

Returns:
true, if media is shared.

Definition at line 462 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().

Parameters:
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.
Returns:
true, if the media appears in the mount table.

Definition at line 476 of file MediaHandler.cc.

References _attach_mtime, attachedMedia(), zypp::media::AttachedMedia::attachPoint, DBG, zypp::media::MediaManager::getMountEntries(), zypp::media::MediaManager::getMountTableMTime(), and zypp::media::AttachedMedia::mediaSource.

Referenced by zypp::media::MediaSMB::isAttached(), zypp::media::MediaNFS::isAttached(), zypp::media::MediaISO::isAttached(), zypp::media::MediaDISK::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!

Parameters:
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 757 of file MediaHandler.cc.

References attachedMedia().

void zypp::media::MediaHandler::forceRelaseAllMedia const MediaSourceRef ref,
bool  matchMountFs,
bool  autoMountedOnly = true
[protected]
 

Definition at line 762 of file MediaHandler.cc.

References zypp::media::MediaManager::getMountEntries().

bool zypp::media::MediaHandler::isAutoMountedMedia const AttachedMedia media  )  [protected, virtual]
 

Reimplemented in zypp::media::MediaCD.

Definition at line 751 of file MediaHandler.cc.

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.

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 

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.

Exceptions:
MediaException 

Reimplemented in zypp::media::MediaCurl.

Definition at line 320 of file MediaHandler.h.

Referenced by disconnect().

virtual void zypp::media::MediaHandler::releaseFrom bool  eject  )  [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.

Exceptions:
MediaException 

Referenced by release().

virtual void zypp::media::MediaHandler::forceEject  )  [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 341 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.

Exceptions:
MediaException 

Definition at line 1186 of file MediaHandler.cc.

References zypp::filesystem::PathInfo::isFile(), and localPath().

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.

Exceptions:
MediaException 

Reimplemented in zypp::media::MediaCurl.

Definition at line 1200 of file MediaHandler.cc.

References zypp::filesystem::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.

Exceptions:
MediaException 

Definition at line 1220 of file MediaHandler.cc.

References zypp::filesystem::PathInfo::isDir(), and localPath().

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.

Exceptions:
MediaException 

Definition at line 1242 of file MediaHandler.cc.

References zypp::filesystem::PathInfo::isDir(), localPath(), 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.

Exceptions:
MediaException 

Definition at line 1280 of file MediaHandler.cc.

References zypp::filesystem::PathInfo::isDir(), localPath(), url(), and ZYPP_THROW.

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.

Exceptions:
MediaException 

Definition at line 1103 of file MediaHandler.cc.

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.

Exceptions:
MediaException 

Definition at line 1123 of file MediaHandler.cc.

References zypp::bit::asString(), DBG, ERR, getFile(), localPath(), url(), and ZYPP_THROW.

bool zypp::media::MediaHandler::downloads  )  const [inline]
 

Hint if files are downloaded or not.

Definition at line 480 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 485 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 490 of file MediaHandler.h.

References _url.

Referenced by dirInfo(), getDirectoryYast(), getDirInfo(), zypp::media::MediaCurl::getFileCopy(), 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.

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 

Definition at line 607 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::MediaDISK, zypp::media::MediaISO, zypp::media::MediaNFS, and zypp::media::MediaSMB.

Definition at line 507 of file MediaHandler.h.

References _mediaSource.

Referenced by attach(), dirInfo(), disconnect(), 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 210 of file MediaHandler.cc.

References _attachPoint, and _relativeRoot.

Referenced by localPath(), zypp::media::MediaAccess::localRoot(), and zypp::media::operator<<().

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 638 of file MediaHandler.cc.

References zypp::filesystem::Pathname::absolutename(), zypp::filesystem::Pathname::empty(), and localRoot().

Referenced by getDir(), getDirectoryYast(), getDirInfo(), 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.

Exceptions:
MediaException 

Definition at line 661 of file MediaHandler.cc.

References disconnectFrom(), isAttached(), and MIL.

Referenced by zypp::media::MediaAccess::disconnect().

void zypp::media::MediaHandler::release bool  eject = false  ) 
 

Use concrete handler to release the media.

Parameters:
eject if true, physically eject the media * (i.e. CD-ROM)
Exceptions:
MediaException 

Definition at line 678 of file MediaHandler.cc.

References _mediaSource, DBG, forceEject(), isAttached(), releaseFrom(), removeAttachPoint(), zypp::RW_pointer< _D, _Traits >::reset(), 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::MediaCD::~MediaCD(), zypp::media::MediaCurl::~MediaCurl(), zypp::media::MediaDIR::~MediaDIR(), zypp::media::MediaDISK::~MediaDISK(), zypp::media::MediaISO::~MediaISO(), zypp::media::MediaNFS::~MediaNFS(), and zypp::media::MediaSMB::~MediaSMB().

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.

Exceptions:
MediaException 

Definition at line 977 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.

Parameters:
srcFilename Filename of source file on the media
targetFilename Filename for the target in the file system
Exceptions:
MediaException 

Definition at line 964 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.

Exceptions:
MediaException 

Definition at line 997 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.

Exceptions:
MediaException 

Definition at line 1016 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.

Exceptions:
MediaException 

Definition at line 602 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.

Exceptions:
MediaException 

Definition at line 611 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.

Exceptions:
MediaException 

Definition at line 1035 of file MediaHandler.cc.

References _attachPoint, _does_download, zypp::filesystem::PathInfo::isFile(), localPath(), zypp::filesystem::PathInfo::path(), 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.

Exceptions:
MediaException 

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.

Exceptions:
MediaException 

Definition at line 1083 of file MediaHandler.cc.

References getDirInfo(), INT, isAttached(), MIL, url(), and ZYPP_THROW.


Friends And Related Function Documentation

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 116 of file MediaHandler.h.

std::ostream& operator<< std::ostream &  str,
const MediaHandler obj
[friend]
 


Member Data Documentation

Pathname zypp::media::MediaHandler::_attachPrefix [static, private]
 

User defined default attach point prefix.

Definition at line 56 of file MediaHandler.h.

Referenced by createAttachPoint(), and setAttachPrefix().

MediaSourceRef zypp::media::MediaHandler::_mediaSource [mutable, private]
 

The attached media source description reference.

Definition at line 62 of file MediaHandler.h.

Referenced by attachedMedia(), isAttached(), isSharedMedia(), mediaSourceName(), release(), removeAttachPoint(), and setMediaSource().

AttachPointRef zypp::media::MediaHandler::_attachPoint [private]
 

This is where the media will be actually attached ("mounted").

All files are provided bellow this + _relativeRoot directory.

Definition at line 68 of file MediaHandler.h.

Referenced by attachedMedia(), attachPoint(), localRoot(), releasePath(), removeAttachPoint(), and setAttachPoint().

AttachPoint zypp::media::MediaHandler::_AttachPointHint [private]
 

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 80 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 87 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 93 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 96 of file MediaHandler.h.

Referenced by checkAttached().

const Url zypp::media::MediaHandler::_url [protected]
 

Url to handle.

Definition at line 102 of file MediaHandler.h.

Referenced by zypp::media::MediaCurl::doGetFileCopy(), zypp::media::MediaCD::forceEject(), zypp::media::MediaCurl::getFileCopy(), zypp::media::MediaCD::MediaCD(), zypp::media::MediaDISK::MediaDISK(), MediaHandler(), zypp::media::MediaISO::MediaISO(), protocol(), and url().

MediaAccessId zypp::media::MediaHandler::_parentId [protected]
 

Access Id of media handler we depend on.

Definition at line 107 of file MediaHandler.h.

Referenced by dependsOnParent(), resetParentId(), and zypp::media::MediaISO::~MediaISO().


The documentation for this class was generated from the following files:
Generated on Thu Jul 6 00:07:32 2006 for zypp by  doxygen 1.4.6