libzypp  17.31.31
downloader_p.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 ----------------------------------------------------------------------/
9 *
10 * This file contains private API, this might break at any time between releases.
11 * You have been warned!
12 *
13 */
14 #ifndef ZYPP_CURL_NG_NETWORK_PRIVATE_DOWNLOADER_P_H_INCLUDED
15 #define ZYPP_CURL_NG_NETWORK_PRIVATE_DOWNLOADER_P_H_INCLUDED
16 
17 #include <zypp-core/zyppng/base/statemachine.h>
18 
27 #if ENABLE_ZCHUNK_COMPRESSION
28 #include "downloaderstates/zck_p.h"
29 #endif
30 
31 namespace zyppng {
32 
46  template <typename Derived>
47  using DownloadStatemachine = Statemachine< Derived, Download::State,
48  // Source State, State Change Event TargetState, Transition Condition, Transition operation
49  Transition< InitialState, &InitialState::sigTransitionToDetectMetalinkState, DetectMetalinkState >,
50  Transition< InitialState, &InitialState::sigTransitionToDlMetaLinkInfoState, DlMetaLinkInfoState >,
51 #if ENABLE_ZCHUNK_COMPRESSION
52  Transition< InitialState, &InitialState::sigTransitionToDLZckHeaderState, DLZckHeadState, DefaultStateCondition, &InitialState::toDLZckHeadState >,
53 #endif
54  Transition< InitialState, &InitialState::sigTransitionToDlNormalFileState, DlNormalFileState >,
55 
56  Transition< DetectMetalinkState, &DetectMetalinkState::sigFinished, DlMetaLinkInfoState, &DetectMetalinkState::toMetalinkGuard, &DetectMetalinkState::toDlMetaLinkInfoState >,
57 #if ENABLE_ZCHUNK_COMPRESSION
58  Transition< DetectMetalinkState, &DetectMetalinkState::sigFinished, DLZckHeadState, &DetectMetalinkState::toZckHeadDownloadGuard, &DetectMetalinkState::toDLZckHeadState >,
59 #endif
60  Transition< DetectMetalinkState, &DetectMetalinkState::sigFinished, DlNormalFileState, &DetectMetalinkState::toSimpleDownloadGuard >,
61 
62  Transition< DlMetaLinkInfoState, &DlMetaLinkInfoState::sigFinished, FinishedState, DefaultStateCondition, &DlMetaLinkInfoState::transitionToFinished >,
63  Transition< DlMetaLinkInfoState, &DlMetaLinkInfoState::sigGotMetadata, PrepareMultiState, DefaultStateCondition, &DlMetaLinkInfoState::transitionToPrepareMulti >,
64  Transition< DlMetaLinkInfoState, &DlMetaLinkInfoState::sigFailed, FinishedState, DefaultStateCondition, &DlMetaLinkInfoState::transitionToFinished >,
65 
66  Transition< PrepareMultiState, &PrepareMultiState::sigFinished, DlMetalinkState, &PrepareMultiState::toMetalinkDownloadGuard , &PrepareMultiState::transitionToMetalinkDl >,
67 #if ENABLE_ZCHUNK_COMPRESSION
68  Transition< PrepareMultiState, &PrepareMultiState::sigFinished, DLZckHeadState, &PrepareMultiState::toZckHeadDownloadGuard, &PrepareMultiState::transitionToZckHeadDl >,
69 #endif
70  Transition< PrepareMultiState, &PrepareMultiState::sigFallback, DlNormalFileState, DefaultStateCondition, &PrepareMultiState::fallbackToNormalTransition >,
71  Transition< PrepareMultiState, &PrepareMultiState::sigFailed, DlNormalFileState >,
72 
73 #if ENABLE_ZCHUNK_COMPRESSION
74  Transition< DLZckHeadState, &DLZckHeadState::sigFinished, DLZckState, DefaultStateCondition, &DLZckHeadState::transitionToDlZckState >,
75  Transition< DLZckHeadState, &DLZckHeadState::sigFailed, DlNormalFileState >,
76 
77  Transition< DLZckState, &DLZckState::sigFinished, FinishedState, DefaultStateCondition, &DLZckState::transitionToFinished >,
78  Transition< DLZckState, &DLZckState::sigFallback, DlNormalFileState >,
79 #endif
80 
81  Transition< DlMetalinkState, &DlMetalinkState::sigFinished, FinishedState, DefaultStateCondition, &DlMetalinkState::transitionToFinished >,
82  Transition< DlMetalinkState, &DlMetalinkState::sigFailed, FinishedState, &DlMetalinkState::toFinalStateCondition, &DlMetalinkState::transitionToFinished >,
83  Transition< DlMetalinkState, &DlMetalinkState::sigFailed, DlNormalFileState, &DlMetalinkState::toSimpleDownloadCondition >,
84 
85  Transition< DlNormalFileState, &DlNormalFileState::sigFinished, FinishedState, DefaultStateCondition, &DlNormalFileState::transitionToFinished >,
86  Transition< DlNormalFileState, &DlNormalFileState::sigFailed, FinishedState, DefaultStateCondition, &DlNormalFileState::transitionToFinished >
87  >;
88 
89  class DownloadPrivate : public DownloadPrivateBase, public DownloadStatemachine<DownloadPrivate>
90  {
91  public:
92  DownloadPrivate ( Downloader &parent, std::shared_ptr<NetworkRequestDispatcher> requestDispatcher, std::shared_ptr<MirrorControl> mirrors, DownloadSpec &&spec, Download &p );
93  void start ();
94  void init() override;
95  };
96 
98  {
99  ZYPP_DECLARE_PUBLIC(Downloader)
100  public:
101  DownloaderPrivate( std::shared_ptr<MirrorControl> mc, Downloader &p );
102 
103  std::vector< std::shared_ptr<Download> > _runningDownloads;
104  std::shared_ptr<NetworkRequestDispatcher> _requestDispatcher;
105 
106  void onDownloadStarted ( Download &download );
107  void onDownloadFinished ( Download &download );
108 
109  Signal< void ( Downloader &parent, Download& download )> _sigStarted;
110  Signal< void ( Downloader &parent, Download& download )> _sigFinished;
111  Signal< void ( Downloader &parent )> _queueEmpty;
112  std::shared_ptr<MirrorControl> _mirrors;
113  };
114 
115 }
116 
117 #endif
The Downloader class.
Definition: downloader.h:38
DownloaderPrivate(std::shared_ptr< MirrorControl > mc, Downloader &p)
Definition: downloader.cc:335
void init() override
Definition: downloader.cc:115
std::shared_ptr< NetworkRequestDispatcher > _requestDispatcher
Definition: downloader_p.h:104
std::vector< std::shared_ptr< Download > > _runningDownloads
Definition: downloader_p.h:103
Signal< void(Downloader &parent, Download &download)> _sigFinished
Definition: downloader_p.h:110
void onDownloadFinished(Download &download)
Definition: downloader.cc:350
Signal< void(Downloader &parent)> _queueEmpty
Definition: downloader_p.h:111
std::shared_ptr< MirrorControl > _mirrors
Definition: downloader_p.h:112
DownloadPrivate(Downloader &parent, std::shared_ptr< NetworkRequestDispatcher > requestDispatcher, std::shared_ptr< MirrorControl > mirrors, DownloadSpec &&spec, Download &p)
Definition: downloader.cc:111
void onDownloadStarted(Download &download)
Definition: downloader.cc:345
Signal< void(Downloader &parent, Download &download)> _sigStarted
Definition: downloader_p.h:109