libzypp 8.13.6
|
#include <MediaMultiCurl.h>
Public Member Functions | |
MediaMultiCurl (const Url &url_r, const Pathname &attach_point_hint_r) | |
~MediaMultiCurl () | |
virtual void | doGetFileCopy (const Pathname &srcFilename, const Pathname &targetFilename, callback::SendReport< DownloadProgressReport > &_report, RequestOptions options=OPTION_NONE) const |
void | multifetch (const Pathname &filename, FILE *fp, std::vector< Url > *urllist, callback::SendReport< DownloadProgressReport > *report=0, MediaBlockList *blklist=0, off_t filesize=off_t(-1)) const |
Protected Member Functions | |
bool | isDNSok (const std::string &host) const |
void | setDNSok (const std::string &host) const |
CURL * | fromEasyPool (const std::string &host) const |
void | toEasyPool (const std::string &host, CURL *easy) const |
virtual void | setupEasy () |
initializes the curl easy handle with the data from the url | |
void | checkFileDigest (Url &url, FILE *fp, MediaBlockList *blklist) const |
Private Attributes | |
curl_slist * | _customHeadersMetalink |
CURLM * | _multi |
std::set< std::string > | _dnsok |
std::map< std::string, CURL * > | _easypool |
Friends | |
class | multifetchrequest |
class | multifetchworker |
Definition at line 40 of file MediaMultiCurl.h.
zypp::media::MediaMultiCurl::MediaMultiCurl | ( | const Url & | url_r, |
const Pathname & | attach_point_hint_r | ||
) |
Definition at line 1148 of file MediaMultiCurl.cc.
References _customHeadersMetalink, _multi, and MIL.
zypp::media::MediaMultiCurl::~MediaMultiCurl | ( | ) |
Definition at line 1156 of file MediaMultiCurl.cc.
References _customHeadersMetalink, _easypool, and _multi.
void zypp::media::MediaMultiCurl::doGetFileCopy | ( | const Pathname & | srcFilename, |
const Pathname & | targetFilename, | ||
callback::SendReport< DownloadProgressReport > & | _report, | ||
RequestOptions | options = OPTION_NONE |
||
) | const [virtual] |
MediaException |
Reimplemented from zypp::media::MediaCurl.
Definition at line 1224 of file MediaMultiCurl.cc.
References zypp::media::MediaCurl::_curl, zypp::media::MediaCurl::_customHeaders, _customHeadersMetalink, zypp::media::MediaHandler::_url, zypp::filesystem::applyUmaskTo(), zypp::filesystem::assert_dir(), zypp::Url::asString(), DBG, zypp::media::MediaHandler::deltafile(), zypp::filesystem::df(), zypp::media::MediaCurl::doGetFileCopyFile(), ERR, zypp::media::MediaCurlException::errstr(), zypp::media::MetaLinkParser::getBlockList(), zypp::media::MediaCurl::getFileUrl(), zypp::Url::getScheme(), zypp::media::MetaLinkParser::getUrls(), zypp::filesystem::hardlinkCopy(), zypp::media::MediaBlockList::haveChecksum(), zypp::ZConfig::instance(), zypp::media::looks_like_metalink(), multifetch(), zypp::str::numstring(), zypp::media::MediaCurl::OPTION_NO_IFMODSINCE, zypp::media::MediaCurl::OPTION_NO_REPORT_START, zypp::media::MetaLinkParser::parse(), zypp::filesystem::rename(), zypp::ZConfig::repoCachePath(), zypp::media::MediaBlockList::reuseBlocks(), zypp::filesystem::unlink(), zypp::media::MediaHandler::url(), WAR, ZYPP_RETHROW, and ZYPP_THROW.
void zypp::media::MediaMultiCurl::multifetch | ( | const Pathname & | filename, |
FILE * | fp, | ||
std::vector< Url > * | urllist, | ||
callback::SendReport< DownloadProgressReport > * | report = 0 , |
||
MediaBlockList * | blklist = 0 , |
||
off_t | filesize = off_t(-1) |
||
) | const |
Definition at line 1414 of file MediaMultiCurl.cc.
References zypp::media::multifetchrequest::_connect_timeout, zypp::media::multifetchrequest::_maxspeed, zypp::media::multifetchrequest::_maxworkers, _multi, zypp::media::MediaCurl::_settings, zypp::media::multifetchrequest::_timeout, checkFileDigest(), zypp::media::MediaCurl::checkProtocol(), zypp::media::TransferSettings::connectTimeout(), zypp::media::MediaBlockList::getFilesize(), zypp::media::MediaCurl::getFileUrl(), zypp::media::MediaBlockList::haveBlocks(), zypp::media::MediaBlockList::haveFilesize(), zypp::media::TransferSettings::maxConcurrentConnections(), zypp::media::TransferSettings::maxDownloadSpeed(), MAXURLS, zypp::media::MediaBlockList::numBlocks(), zypp::media::multifetchrequest::run(), zypp::media::TransferSettings::timeout(), and ZYPP_THROW.
Referenced by doGetFileCopy().
bool zypp::media::MediaMultiCurl::isDNSok | ( | const std::string & | host | ) | const [protected] |
Definition at line 1481 of file MediaMultiCurl.cc.
References _dnsok.
Referenced by zypp::media::multifetchworker::checkdns().
void zypp::media::MediaMultiCurl::setDNSok | ( | const std::string & | host | ) | const [protected] |
Definition at line 1486 of file MediaMultiCurl.cc.
References _dnsok.
Referenced by zypp::media::multifetchworker::dnsevent().
CURL * zypp::media::MediaMultiCurl::fromEasyPool | ( | const std::string & | host | ) | const [protected] |
Definition at line 1491 of file MediaMultiCurl.cc.
References _easypool.
Referenced by zypp::media::multifetchworker::multifetchworker().
void zypp::media::MediaMultiCurl::toEasyPool | ( | const std::string & | host, |
CURL * | easy | ||
) | const [protected] |
Definition at line 1500 of file MediaMultiCurl.cc.
References _easypool.
Referenced by zypp::media::multifetchworker::~multifetchworker().
void zypp::media::MediaMultiCurl::setupEasy | ( | ) | [protected, virtual] |
initializes the curl easy handle with the data from the url
MediaCurlSetOptException | if there is a problem |
Connect timeout
Speed limits
Reimplemented from zypp::media::MediaCurl.
Definition at line 1180 of file MediaMultiCurl.cc.
References zypp::media::MediaCurl::_customHeaders, and _customHeadersMetalink.
void zypp::media::MediaMultiCurl::checkFileDigest | ( | Url & | url, |
FILE * | fp, | ||
MediaBlockList * | blklist | ||
) | const [protected] |
Definition at line 1465 of file MediaMultiCurl.cc.
References zypp::media::MediaBlockList::createFileDigest(), zypp::media::MediaBlockList::haveFileChecksum(), zypp::Digest::update(), zypp::media::MediaBlockList::verifyFileDigest(), and ZYPP_THROW.
Referenced by multifetch().
friend class multifetchrequest [friend] |
Definition at line 42 of file MediaMultiCurl.h.
friend class multifetchworker [friend] |
Definition at line 43 of file MediaMultiCurl.h.
curl_slist* zypp::media::MediaMultiCurl::_customHeadersMetalink [private] |
Definition at line 65 of file MediaMultiCurl.h.
Referenced by doGetFileCopy(), MediaMultiCurl(), setupEasy(), and ~MediaMultiCurl().
CURLM* zypp::media::MediaMultiCurl::_multi [mutable, private] |
Definition at line 66 of file MediaMultiCurl.h.
Referenced by MediaMultiCurl(), multifetch(), and ~MediaMultiCurl().
std::set<std::string> zypp::media::MediaMultiCurl::_dnsok [mutable, private] |
Definition at line 67 of file MediaMultiCurl.h.
Referenced by isDNSok(), and setDNSok().
std::map<std::string, CURL *> zypp::media::MediaMultiCurl::_easypool [mutable, private] |
Definition at line 68 of file MediaMultiCurl.h.
Referenced by fromEasyPool(), toEasyPool(), and ~MediaMultiCurl().