libzypp  17.37.5
commitpackagepreloader_p.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
9 
10 #ifndef ZYPP_TARGET_PRIVATE_COMMITPACKAGEPRELOADER_H
11 #define ZYPP_TARGET_PRIVATE_COMMITPACKAGEPRELOADER_H
12 
13 #include <zypp-core/Pathname.h>
15 #include <zypp/sat/Transaction.h>
18 #include <zypp/ZYppCallbacks.h>
19 
20 #include <map>
21 #include <deque>
22 #include <chrono>
23 
24 namespace zyppng {
25 ZYPP_FWD_DECL_TYPE_WITH_REFS(NetworkRequestDispatcher);
26 ZYPP_FWD_DECL_TYPE_WITH_REFS(NetworkRequest);
27 }
28 
29 namespace zypp {
30 
32 {
33  using clock = std::chrono::steady_clock;
34 public:
36 
37  void preloadTransaction( const std::vector<sat::Transaction::Step> &steps );
38  void cleanupCaches();
39  bool missed() const;
40 
41 private:
42  class PreloadWorker;
43  struct RepoUrl {
46  int refs = 0; //< how many workers operate on the mirror
47  int miss = 0; //< how many times this mirror had files misses
48  };
49 
51  std::vector<RepoUrl> _baseUrls;
52  };
53 
54  void reportBytesDownloaded ( ByteCount newBytes );
55 
56  std::map<Repository::IdType, RepoDownloadData> _dlRepoInfo;
57  std::deque<PoolItem> _requiredDls;
58  std::vector<zyppng::Ref<PreloadWorker>> _workers;
61  bool _missedDownloads = false;
62 
65  std::optional<clock::time_point> _lastProgressUpdate;
66 
67  zyppng::NetworkRequestDispatcherRef _dispatcher;
68 };
69 
70 }
71 
72 #endif // ZYPP_TARGET_PRIVATE_COMMITPACKAGEPRELOADER_H
std::shared_ptr< T > Ref
Definition: zyppglobal.h:110
Store and operate with byte count.
Definition: ByteCount.h:31
std::optional< clock::time_point > _lastProgressUpdate
media::UrlResolverPlugin::HeaderList headers
zyppng::NetworkRequestDispatcherRef _dispatcher
std::chrono::steady_clock clock
callback::SendReport< media::CommitPreloadReport > _report
void preloadTransaction(const std::vector< sat::Transaction::Step > &steps)
zyppng::Ref< internal::ProgressTracker > _pTracker
std::vector< zyppng::Ref< PreloadWorker > > _workers
std::map< Repository::IdType, RepoDownloadData > _dlRepoInfo
ZYPP_FWD_DECL_TYPE_WITH_REFS(EventDispatcher)
std::multimap< std::string, std::string > HeaderList
void reportBytesDownloaded(ByteCount newBytes)
Easy-to use interface to the ZYPP dependency resolver.
Definition: Application.cc:19
Url manipulation class.
Definition: Url.h:92