libzypp  17.22.0
downloader_p.h
Go to the documentation of this file.
1 #ifndef ZYPP_NG_MEDIA_HTTP_PRIVATE_DOWNLOADER_P_H_INCLUDED
2 #define ZYPP_NG_MEDIA_HTTP_PRIVATE_DOWNLOADER_P_H_INCLUDED
3 
8 #include <zypp/zyppng/media/network/TransferSettings>
11 
12 #include <deque>
13 
14 namespace zyppng {
15 
16  class NetworkRequestDispatcher;
17 
19  {
20  public:
22  DownloadPrivate ( Downloader &parent, std::shared_ptr<NetworkRequestDispatcher> requestDispatcher, Url &&file, zypp::filesystem::Pathname &&targetPath, zypp::ByteCount &&expectedFileSize );
23 
24  struct Request : public NetworkRequest {
25 
27  using Ptr = std::shared_ptr<Request>;
28  using WeakPtr = std::shared_ptr<Request>;
29 
30  void connectSignals ( DownloadPrivate &dl );
31  void disconnectSignals ();
32 
33  size_t _myBlock = -1;
34  int _retryCount = 0; //< how many times was this request restarted
35  bool _triedCredFromStore = false; //< already tried to authenticate from credential store?
36  Url _originalUrl; //< The unstripped URL as it was passed to Download , before transfer settings are removed
37 
38  connection _sigStartedConn;
39  connection _sigProgressConn;
40  connection _sigFinishedConn;
41  };
42 
43  //keep a list with failed blocks in case we run out of mirrors,
44  //in that case we can retry to download them once we have a finished download
45  struct FailedBlock {
46  size_t _block = -1;
47  int _retryCount = 0;
49  };
50  std::deque<FailedBlock> _failedBlocks;
51 
52  std::vector< std::shared_ptr<Request> > _runningRequests;
53  std::shared_ptr<NetworkRequestDispatcher> _requestDispatcher;
54 
59  std::string _errorString;
61 
63 
64  //data requires for multi part downloads
65  off_t _downloadedMultiByteCount = 0; //< the number of bytes that were already fetched in RunningMulti state
66  std::deque<Url> _multiPartMirrors;
68  size_t _blockIter = 0;
69 
70  Downloader *_parent = nullptr;
72 
73  bool _isMultiDownload = false; //< State flag, shows if we are currently downloading a multi part file
74  bool _isMultiPartEnabled = true; //< Enables/Disables automatic multipart downloads
75  bool _checkExistsOnly = false; //< Set to true if Downloader should only check if the URL exits
76 
77  signal<void ( Download &req )> _sigStarted;
79  signal<void ( Download &req, off_t dlnow )> _sigAlive;
80  signal<void ( Download &req, off_t dltotal, off_t dlnow )> _sigProgress;
81  signal<void ( Download &req )> _sigFinished;
82  signal<void ( zyppng::Download &req, zyppng::NetworkAuthData &auth, const std::string &availAuth )> _sigAuthRequired;
83 
84  private:
85  void start ();
86  void setState ( Download::State newState );
88  void onRequestProgress ( NetworkRequest &req, off_t dltotal, off_t dlnow, off_t, off_t );
89  void onRequestFinished ( NetworkRequest &req , const NetworkRequestError &err );
90  void addNewRequest (std::shared_ptr<Request> req );
91  std::shared_ptr<Request> initMultiRequest(size_t block , NetworkRequestError &err);
93  void setFailed ( std::string && reason );
94  void setFinished ( bool success = true );
96  };
97 
99  {
101  public:
103 
104  std::vector< std::shared_ptr<Download> > _runningDownloads;
105  std::shared_ptr<NetworkRequestDispatcher> _requestDispatcher;
106 
107  void onDownloadStarted ( Download &download );
108  void onDownloadFinished ( Download &download );
109 
110  signal<void ( Downloader &parent, Download& download )> _sigStarted;
111  signal<void ( Downloader &parent, Download& download )> _sigFinished;
112  signal<void ( Downloader &parent )> _queueEmpty;
113  };
114 
115 }
116 
117 #endif
zyppng::DownloadPrivate
Definition: downloader_p.h:18
zyppng::NetworkRequest::NetworkRequest
NetworkRequest(Url url, zypp::Pathname targetFile, off_t start=-1, off_t len=0, FileMode fMode=WriteExclusive)
Definition: request.cc:486
zyppng::DownloadPrivate::Request::_sigStartedConn
connection _sigStartedConn
Definition: downloader_p.h:38
zyppng::DownloadPrivate::Request::_sigProgressConn
connection _sigProgressConn
Definition: downloader_p.h:39
zyppng::DownloadPrivate::_sigAlive
signal< void(Download &req, off_t dlnow)> _sigAlive
Definition: downloader_p.h:79
zyppng::BasePrivate::parent
Base::WeakPtr parent
Definition: base_p.h:17
zyppng::DownloadPrivate::FailedBlock
Definition: downloader_p.h:45
zyppng::DownloadPrivate::_sigProgress
signal< void(Download &req, off_t dltotal, off_t dlnow)> _sigProgress
Definition: downloader_p.h:80
zyppng::Download
Definition: downloader.h:123
zyppng::BasePrivate
Definition: base_p.h:12
zyppng::DownloadPrivate::Request::connectSignals
void connectSignals(DownloadPrivate &dl)
Definition: downloader.cc:68
zyppng::DownloaderPrivate::onDownloadStarted
void onDownloadStarted(Download &download)
Definition: downloader.cc:782
zyppng::DownloadPrivate::FailedBlock::_retryCount
int _retryCount
Definition: downloader_p.h:47
zyppng::Download::InitialState
Definition: downloader.h:137
zyppng::DownloadPrivate::_isMultiPartEnabled
bool _isMultiPartEnabled
Definition: downloader_p.h:74
zyppng::DownloadPrivate::_requestDispatcher
std::shared_ptr< NetworkRequestDispatcher > _requestDispatcher
Definition: downloader_p.h:53
zyppng::DownloadPrivate::_deltaFilePath
zypp::Pathname _deltaFilePath
Definition: downloader_p.h:57
zyppng::DownloadPrivate::_transferSettings
TransferSettings _transferSettings
Definition: downloader_p.h:62
zyppng::DownloadPrivate::Request::_myBlock
size_t _myBlock
Definition: downloader_p.h:33
zypp::media::MediaBlockList
Definition: MediaBlockList.h:35
zyppng::DownloaderPrivate::DownloaderPrivate
DownloaderPrivate()
Definition: downloader.cc:777
zyppng::DownloadPrivate::addNewRequest
void addNewRequest(std::shared_ptr< Request > req)
Definition: downloader.cc:569
zyppng::DownloadPrivate::_blockList
zypp::media::MediaBlockList _blockList
Definition: downloader_p.h:67
zypp::media::TransferSettings
Holds transfer setting.
Definition: TransferSettings.h:20
zyppng::DownloadPrivate::onRequestFinished
void onRequestFinished(NetworkRequest &req, const NetworkRequestError &err)
Definition: downloader.cc:192
zyppng::DownloadPrivate::safeFillSettingsFromURL
NetworkRequestError safeFillSettingsFromURL(const Url &url, TransferSettings &set)
Definition: downloader.cc:654
zyppng::DownloadPrivate::onRequestStarted
void onRequestStarted(NetworkRequest &)
Definition: downloader.cc:132
zyppng::DownloadPrivate::_isMultiDownload
bool _isMultiDownload
Definition: downloader_p.h:73
zyppng::DownloadPrivate::Request::_sigFinishedConn
connection _sigFinishedConn
Definition: downloader_p.h:40
zypp::ByteCount
Store and operate with byte count.
Definition: ByteCount.h:30
zyppng::DownloadPrivate::Request
Definition: downloader_p.h:24
zyppng::DownloadPrivate::_sigAuthRequired
signal< void(zyppng::Download &req, zyppng::NetworkAuthData &auth, const std::string &availAuth)> _sigAuthRequired
Definition: downloader_p.h:82
zyppng::DownloaderPrivate::_queueEmpty
signal< void(Downloader &parent)> _queueEmpty
Definition: downloader_p.h:112
zyppng::DownloadPrivate::_targetPath
zypp::filesystem::Pathname _targetPath
Definition: downloader_p.h:56
zyppng::DownloadPrivate::_sigStarted
signal< void(Download &req)> _sigStarted
Definition: downloader_p.h:77
zyppng::DownloadPrivate::setFailed
void setFailed(std::string &&reason)
Definition: downloader.cc:641
zypp::media::state
state
Definition: MetaLinkParser.cc:34
zyppng::DownloadPrivate::setState
void setState(Download::State newState)
Definition: downloader.cc:124
MediaBlockList.h
zyppng::DownloadPrivate::_failedBlocks
std::deque< FailedBlock > _failedBlocks
Definition: downloader_p.h:50
zyppng::DownloadPrivate::_sigStateChanged
signal< void(Download &req, Download::State state)> _sigStateChanged
Definition: downloader_p.h:78
networkrequesterror.h
base_p.h
zyppng::DownloadPrivate::_url
Url _url
Definition: downloader_p.h:55
zyppng::DownloadPrivate::_errorString
std::string _errorString
Definition: downloader_p.h:59
zyppng::DownloadPrivate::_requestError
NetworkRequestError _requestError
Definition: downloader_p.h:60
zyppng::DownloaderPrivate::_requestDispatcher
std::shared_ptr< NetworkRequestDispatcher > _requestDispatcher
Definition: downloader_p.h:105
zyppng::DownloadPrivate::Request::_retryCount
int _retryCount
Definition: downloader_p.h:34
zyppng::DownloadPrivate::initMultiRequest
std::shared_ptr< Request > initMultiRequest(size_t block, NetworkRequestError &err)
Definition: downloader.cc:577
signals.h
zyppng::DownloadPrivate::_sigFinished
signal< void(Download &req)> _sigFinished
Definition: downloader_p.h:81
request.h
zyppng::DownloadPrivate::_downloadedMultiByteCount
off_t _downloadedMultiByteCount
Definition: downloader_p.h:65
zyppng::DownloadPrivate::DownloadPrivate
DownloadPrivate(Downloader &parent, std::shared_ptr< NetworkRequestDispatcher > requestDispatcher, Url &&file, zypp::filesystem::Pathname &&targetPath, zypp::ByteCount &&expectedFileSize)
Definition: downloader.cc:60
zyppng::Downloader
The Downloader class.
Definition: downloader.h:34
downloader.h
zyppng::NetworkRequestError
The NetworkRequestError class Represents a error that occured in.
Definition: networkrequesterror.h:20
zyppng::DownloadPrivate::FailedBlock::_failedWithErr
NetworkRequestError _failedWithErr
Definition: downloader_p.h:48
zypp::media::CurlAuthData
Curl HTTP authentication data.
Definition: MediaUserAuth.h:74
zyppng::Base::Ptr
std::shared_ptr< Base > Ptr
Definition: base.h:38
zyppng::DownloadPrivate::_runningRequests
std::vector< std::shared_ptr< Request > > _runningRequests
Definition: downloader_p.h:52
zyppng::DownloadPrivate::setFinished
void setFinished(bool success=true)
Definition: downloader.cc:648
ZYPP_DECLARE_PUBLIC
#define ZYPP_DECLARE_PUBLIC(Class)
Definition: zyppglobal.h:39
zyppng::DownloaderPrivate::_sigFinished
signal< void(Downloader &parent, Download &download)> _sigFinished
Definition: downloader_p.h:111
zyppng::DownloadPrivate::start
void start()
Definition: downloader.cc:82
zypp::filesystem::Pathname
Pathname.
Definition: Pathname.h:44
zyppng::Base::WeakPtr
std::weak_ptr< Base > WeakPtr
Definition: base.h:39
zyppng::DownloadPrivate::_blockIter
size_t _blockIter
Definition: downloader_p.h:68
zyppng::DownloadPrivate::_state
Download::State _state
Definition: downloader_p.h:71
zyppng::DownloadPrivate::FailedBlock::_block
size_t _block
Definition: downloader_p.h:46
zyppng::DownloadPrivate::Request::_originalUrl
Url _originalUrl
Definition: downloader_p.h:36
zyppng::DownloaderPrivate::onDownloadFinished
void onDownloadFinished(Download &download)
Definition: downloader.cc:787
zyppng
Definition: abstracteventsource.cc:8
zyppng::DownloadPrivate::findNextMirror
bool findNextMirror(Url &url, TransferSettings &set, NetworkRequestError &err)
Definition: downloader.cc:607
zyppng::Download::State
State
Definition: downloader.h:136
zyppng::DownloadPrivate::Request::_triedCredFromStore
bool _triedCredFromStore
Definition: downloader_p.h:35
zyppng::DownloadPrivate::onRequestProgress
void onRequestProgress(NetworkRequest &req, off_t dltotal, off_t dlnow, off_t, off_t)
Definition: downloader.cc:138
zyppng::DownloadPrivate::_parent
Downloader * _parent
Definition: downloader_p.h:70
zyppng::NetworkRequest
Definition: request.h:35
zyppng::DownloadPrivate::Request::disconnectSignals
void disconnectSignals()
Definition: downloader.cc:75
url
Url url
Definition: MediaCurl.cc:65
zypp::Url
Url manipulation class.
Definition: Url.h:87
zyppng::DownloaderPrivate::_runningDownloads
std::vector< std::shared_ptr< Download > > _runningDownloads
Definition: downloader_p.h:104
zyppng::DownloaderPrivate::_sigStarted
signal< void(Downloader &parent, Download &download)> _sigStarted
Definition: downloader_p.h:110
zyppng::DownloadPrivate::_expectedFileSize
zypp::ByteCount _expectedFileSize
Definition: downloader_p.h:58
zyppng::DownloaderPrivate
Definition: downloader_p.h:98
zyppng::DownloadPrivate::_multiPartMirrors
std::deque< Url > _multiPartMirrors
Definition: downloader_p.h:66
zyppng::DownloadPrivate::_checkExistsOnly
bool _checkExistsOnly
Definition: downloader_p.h:75