libzypp 17.37.17
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.
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
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
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 72 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 125 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 132 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 163 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 169 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
nexttry 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 43 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
apointThe directory to check.
Returns
True, if the directory checks succeeded.

Reimplemented from zypp::media::MediaHandler.

Definition at line 62 of file MediaNetworkCommonHandler.cc.

◆ clearQueryString()

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

Definition at line 67 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 203 of file MediaNetworkCommonHandler.cc.

◆ setupTransferSettings()

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

initializes the curl easy handle with the data from the url

Exceptions
MediaCurlSetOptExceptionif there is a problem

Definition at line 235 of file MediaNetworkCommonHandler.cc.

◆ clearTransferSettings()

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

Definition at line 312 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 320 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
MediaBadUrlExceptionif 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 327 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 341 of file MediaNetworkCommonHandler.cc.

◆ anonymousIdHeader()

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

Definition at line 175 of file MediaNetworkCommonHandler.cc.

◆ distributionFlavorHeader()

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

Definition at line 189 of file MediaNetworkCommonHandler.cc.

◆ agentString()

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

Definition at line 222 of file MediaNetworkCommonHandler.cc.

◆ canTryNextMirror()

template<typename Excpt>
bool zypp::media::MediaNetworkCommonHandler::canTryNextMirror ( const Excpt & excpt_r)
inlinestatic

Definition at line 103 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 116 of file MediaNetworkCommonHandler.h.


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