libzypp 17.31.23
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
29#endif
30
31namespace 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
void init() override
Definition: downloader.cc:115
std::shared_ptr< MirrorControl > _mirrors
Definition: downloader_p.h:112
Signal< void(Downloader &parent, Download &download)> _sigStarted
Definition: downloader_p.h:109
std::vector< std::shared_ptr< Download > > _runningDownloads
Definition: downloader_p.h:103
void onDownloadFinished(Download &download)
Definition: downloader.cc:350
Signal< void(Downloader &parent)> _queueEmpty
Definition: downloader_p.h:111
std::shared_ptr< NetworkRequestDispatcher > _requestDispatcher
Definition: downloader_p.h:104
Signal< void(Downloader &parent, Download &download)> _sigFinished
Definition: downloader_p.h:110
void onDownloadStarted(Download &download)
Definition: downloader.cc:345
The Downloader class.
Definition: downloader.h:39