libzypp: zypp::media::MediaNetworkCommonHandler Class Reference

libzypp 17.38.13

zypp::media::MediaNetworkCommonHandler Class Referenceabstract

Baseclass for MediaCurl. More...

`#include <zypp/media/MediaNetworkCommonHandler.h>`

Inheritance diagram for zypp::media::MediaNetworkCommonHandler:

## Public Member Functions
| MediaNetworkCommonHandler (const MirroredOrigin &origin_r, const Pathname &attach_point_r, const Pathname &urlpath_below_attachpoint_r, const bool does_download_r)
void | getFile (const OnMediaLocation &file) const override
| Call concrete handler to provide file below attach point.
void | getDir (const Pathname &dirname, bool recurse_r) const override
| Call concrete handler to provide directory content (not recursive!) below attach point.
void | getDirInfo (std::list< std::string > &retlist, const Pathname &dirname, bool dots=true) const override
| Call concrete handler to provide a content list of directory on media via retlist.
void | getDirInfo (filesystem::DirContent &retlist, const Pathname &dirname, bool dots=true) const override
| Basically the same as getDirInfo above.
Public Member Functions inherited from zypp::media::MediaHandler
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.
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)
| 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)
| MediaHandler (MirroredOrigin origin_r, const Pathname &attach_point_r, 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.
const MirroredOrigin & | origin () const
| Access the internal MirroredOrigin (authority and mirrors).
Url | url () const
| Primary Url used.
OriginEndpoint | originEndpoint () const
| Primary OriginEndpoint 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 (const OnMediaLocation &file) const
| Use concrete handler to provide file denoted by path below 'localRoot'.
void | provideFileCopy (const OnMediaLocation &srcFile, const 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 (const Pathname &dirname) const
| Use concrete handler to provide directory denoted by path below 'localRoot' (not recursive!).
void | provideDirTree (const 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 (const 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.
virtual void | precacheFiles (const std::vector< OnMediaLocation > &files)
| Tries to fetch the given files and precaches them.

## Static Public Member Functions
static zypp::Url | findGeoIPRedirect (const zypp::Url &url)
| Rewrites the baseURL to the geoIP target if one is found in the metadata cache, otherwise simply returns the url again.
static bool | authenticate (const Url &url, CredentialManager &cm, TransferSettings &settings, const std::string &availAuthTypes, bool firstTry)
static const char * | anonymousIdHeader ()
static const char * | distributionFlavorHeader ()
static const char * | agentString ()
template<typename Excpt>
static bool | canTryNextMirror (const Excpt &excpt_r)
Static Public Member Functions inherited from zypp::media::MediaHandler
static bool | setAttachPrefix (const Pathname &attach_prefix)
static std::string | getRealPath (const std::string &path)
static Pathname | getRealPath (const Pathname &path)
static bool | checkAttachPoint (const Pathname &apoint, bool empty_dir, bool writeable)
| Verify if the specified directory as attach point (root) using requested checks.

## Static Public Attributes
static constexpr std::string_view | MIRR_SETTINGS_KEY = "_zypp_transfersettings"

## Protected Member Functions
void | attachTo (bool next) override
| Call concrete handler to attach the media.
bool | checkAttachPoint (const Pathname &apoint) const override
| Verify if the specified directory as attach point (root) as requires by the particular media handler implementation.
Url | clearQueryString (const Url &url) const
Url | getFileUrl (int mirrorIdx, const Pathname &filename) const
| concatenate the attach url and the filename to a complete download url
void | setupTransferSettings ()
| initializes the curl easy handle with the data from the url
void | clearTransferSettings ()
bool | authenticate (const Url &url, TransferSettings &settings, const std::string &availAuthTypes, bool firstTry)
virtual void | checkProtocol (const Url &url) const =0
| check the url is supported by the curl library
std::vector< unsigned > | mirrorOrder (const OnMediaLocation &loc) const
void | deprioritizeMirror (unsigned mirr) const
| Move mirror index mirr to the end of the attempt list.
Protected Member Functions inherited from zypp::media::MediaHandler
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 | getFileCopy (const OnMediaLocation &file, 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 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.

## Protected Attributes
std::vector< Url > | _redirTargets
std::vector< unsigned > | _mirrOrder
Protected Attributes inherited from zypp::media::MediaHandler
MirroredOrigin | _origin
| Contains the authority URL and mirrors.
MediaAccessId | _parentId
| Access Id of media handler we depend on.

## Additional Inherited Members
Public Types inherited from zypp::media::MediaHandler
using | Ptr = shared_ptr<MediaHandler>
using | constPtr = shared_ptr<const MediaHandler>

## Detailed Description

Baseclass for MediaCurl.

Access to commonly used stuff like TransferSettings mainly

Definition at line 33 of file MediaNetworkCommonHandler.h.

## Constructor & Destructor Documentation

## ◆ MediaNetworkCommonHandler()

zypp::media::MediaNetworkCommonHandler::MediaNetworkCommonHandler | ( | const MirroredOrigin & | origin_r,
|  | const Pathname & | attach_point_r,
|  | const Pathname & | urlpath_below_attachpoint_r,
|  | const bool | does_download_r )

Definition at line 36 of file MediaNetworkCommonHandler.cc.

## Member Function Documentation

## ◆ findGeoIPRedirect()

zypp::Url zypp::media::MediaNetworkCommonHandler::findGeoIPRedirect | ( | const zypp::Url & | url | ) |
| static

Rewrites the baseURL to the geoIP target if one is found in the metadata cache, otherwise simply returns the url again.

Definition at line 78 of file MediaNetworkCommonHandler.cc.

## ◆ getFile()

void zypp::media::MediaNetworkCommonHandler::getFile | ( | const OnMediaLocation & | file | ) | const
| overridevirtual

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 |

Reimplemented from zypp::media::MediaHandler.

Definition at line 131 of file MediaNetworkCommonHandler.cc.

## ◆ getDir()

void zypp::media::MediaNetworkCommonHandler::getDir | ( | const Pathname & | dirname,
|  | bool | recurse_r ) const
| overridevirtual

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 |

Implements zypp::media::MediaHandler.

Definition at line 138 of file MediaNetworkCommonHandler.cc.

## ◆ getDirInfo() [1/2]

void zypp::media::MediaNetworkCommonHandler::getDirInfo | ( | std::list< std::string > & | retlist,
|  | const Pathname & | dirname,
|  | bool | dots = true ) const
| overridevirtual

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 |

Implements zypp::media::MediaHandler.

Definition at line 169 of file MediaNetworkCommonHandler.cc.

## ◆ getDirInfo() [2/2]

void zypp::media::MediaNetworkCommonHandler::getDirInfo | ( | filesystem::DirContent & | retlist,
|  | const Pathname & | dirname,
|  | bool | dots = true ) const
| overridevirtual

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 |

Implements zypp::media::MediaHandler.

Definition at line 175 of file MediaNetworkCommonHandler.cc.

## ◆ attachTo()

void zypp::media::MediaNetworkCommonHandler::attachTo | ( | bool | next | ) |
| overrideprotectedvirtual

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 |

Implements zypp::media::MediaHandler.

Definition at line 49 of file MediaNetworkCommonHandler.cc.

## ◆ checkAttachPoint()

bool zypp::media::MediaNetworkCommonHandler::checkAttachPoint | ( | const Pathname & | apoint | ) | const
| overrideprotectedvirtual

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 from zypp::media::MediaHandler.

Definition at line 68 of file MediaNetworkCommonHandler.cc.

## ◆ clearQueryString()

Url zypp::media::MediaNetworkCommonHandler::clearQueryString | ( | const Url & | url | ) | const
| protected

Definition at line 73 of file MediaNetworkCommonHandler.cc.

## ◆ getFileUrl()

Url zypp::media::MediaNetworkCommonHandler::getFileUrl | ( | int | mirrorIdx,
|  | const Pathname & | filename ) const
| protected

concatenate the attach url and the filename to a complete download url

Definition at line 209 of file MediaNetworkCommonHandler.cc.

## ◆ setupTransferSettings()

void zypp::media::MediaNetworkCommonHandler::setupTransferSettings | ( |  | ) |
| protected

initializes the curl easy handle with the data from the url

Exceptions

  MediaCurlSetOptException | if there is a problem

Definition at line 241 of file MediaNetworkCommonHandler.cc.

## ◆ clearTransferSettings()

void zypp::media::MediaNetworkCommonHandler::clearTransferSettings | ( |  | ) |
| protected

Definition at line 314 of file MediaNetworkCommonHandler.cc.

## ◆ authenticate() [1/2]

bool zypp::media::MediaNetworkCommonHandler::authenticate | ( | const Url & | url,
|  | TransferSettings & | settings,
|  | const std::string & | availAuthTypes,
|  | bool | firstTry )
| protected

Todo
  need a way to pass different CredManagerOptions here

Definition at line 322 of file MediaNetworkCommonHandler.cc.

## ◆ checkProtocol()

virtual void zypp::media::MediaNetworkCommonHandler::checkProtocol | ( | const Url & | url | ) | const
| protectedpure virtual

check the url is supported by the curl library

Exceptions

  MediaBadUrlException | if there is a problem

Implemented in zypp::media::MediaCurl2, and zypp::media::MediaCurl.

## ◆ mirrorOrder()

std::vector< unsigned int > zypp::media::MediaNetworkCommonHandler::mirrorOrder | ( | const OnMediaLocation & | loc | ) | const
| protected

Definition at line 329 of file MediaNetworkCommonHandler.cc.

## ◆ deprioritizeMirror()

void zypp::media::MediaNetworkCommonHandler::deprioritizeMirror | ( | unsigned | mirr | ) | const
| protected

Move mirror index mirr to the end of the attempt list.

Definition at line 348 of file MediaNetworkCommonHandler.cc.

## ◆ authenticate() [2/2]

bool zypp::media::MediaNetworkCommonHandler::authenticate | ( | const Url & | url,
|  | CredentialManager & | cm,
|  | TransferSettings & | settings,
|  | const std::string & | availAuthTypes,
|  | bool | firstTry )
| static

Todo
  find a way to save the url with changed username back to repoinfo or dont store urls with username (and either forbid more repos with the same url and different user, or return a set of credentials from CM and try them one by one)

Definition at line 358 of file MediaNetworkCommonHandler.cc.

## ◆ anonymousIdHeader()

const char * zypp::media::MediaNetworkCommonHandler::anonymousIdHeader | ( |  | ) |
| static

Definition at line 181 of file MediaNetworkCommonHandler.cc.

## ◆ distributionFlavorHeader()

const char * zypp::media::MediaNetworkCommonHandler::distributionFlavorHeader | ( |  | ) |
| static

Definition at line 195 of file MediaNetworkCommonHandler.cc.

## ◆ agentString()

const char * zypp::media::MediaNetworkCommonHandler::agentString | ( |  | ) |
| static

Definition at line 228 of file MediaNetworkCommonHandler.cc.

## ◆ canTryNextMirror()

template<typename Excpt>

bool zypp::media::MediaNetworkCommonHandler::canTryNextMirror | ( | const Excpt & | excpt_r | ) |
| inlinestatic

Definition at line 108 of file MediaNetworkCommonHandler.h.

## Member Data Documentation

## ◆ MIRR_SETTINGS_KEY

std::string_view zypp::media::MediaNetworkCommonHandler::MIRR_SETTINGS_KEY = "_zypp_transfersettings"
| staticconstexpr

Definition at line 37 of file MediaNetworkCommonHandler.h.

## ◆ _redirTargets

std::vector<Url> zypp::media::MediaNetworkCommonHandler::_redirTargets
| protected

Definition at line 121 of file MediaNetworkCommonHandler.h.

## ◆ _mirrOrder

std::vector<unsigned> zypp::media::MediaNetworkCommonHandler::_mirrOrder
| mutableprotected

Definition at line 122 of file MediaNetworkCommonHandler.h.

The documentation for this class was generated from the following files:

- zypp/media/MediaNetworkCommonHandler.h
- zypp/media/MediaNetworkCommonHandler.cc