libzypp 17.32.5
repodownloaderwf.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
9#ifndef ZYPP_NG_REPODOWNLOADER_WORKFLOW_INCLUDED
10#define ZYPP_NG_REPODOWNLOADER_WORKFLOW_INCLUDED
11
12
13#include <zypp/RepoInfo.h>
14#include <zypp/ng/repo/Downloader>
15#include <zypp-core/zyppng/ui/ProgressObserver>
16#include <zypp-core/zyppng/pipelines/AsyncResult>
17#include <zypp-core/zyppng/pipelines/Expected>
18#include <zypp-media/MediaException>
19#include <zypp-media/ng/ProvideSpec>
20
21#include <zypp/ManagedFile.h>
22
23
24namespace zyppng {
25 class ProvideMediaHandle;
26 class SyncMediaHandle;
27
28 namespace RepoDownloaderWorkflow {
31
32 AsyncOpRef<expected<zypp::RepoStatus>> repoStatus( repo::AsyncDownloadContextRef dl, ProvideMediaHandle mediaHandle );
33 expected<zypp::RepoStatus> repoStatus( repo::SyncDownloadContextRef dl, SyncMediaHandle mediaHandle );
34
35 AsyncOpRef<expected<repo::AsyncDownloadContextRef>> download ( repo::AsyncDownloadContextRef dl, ProvideMediaHandle mediaHandle, ProgressObserverRef progressObserver = nullptr );
36 expected<repo::SyncDownloadContextRef> download ( repo::SyncDownloadContextRef dl, SyncMediaHandle mediaHandle, ProgressObserverRef progressObserver = nullptr );
37
38
39 template <typename MediaHandle>
40 auto downloadMediaInfo ( MediaHandle &&mediaHandle, const zypp::filesystem::Pathname &destdir ) {
41 using namespace zyppng::operators;
42 using ProvideType = typename std::decay_t<MediaHandle>::ParentType;
43
44 // check if we have a async media handle
45 constexpr bool isAsync = std::is_same_v<std::decay_t<MediaHandle>, ProvideMediaHandle>;
46 auto provider = mediaHandle.parent();
47 if ( !provider )
49
50 return provider->provide( std::forward<MediaHandle>(mediaHandle), "/media.1/media", ProvideFileSpec().setOptional(true).setDownloadSize( zypp::ByteCount(20, zypp::ByteCount::MB ) ))
51 | and_then( ProvideType::copyResultToDest( provider, destdir / "/media.1/media" ) );
52
53 }
54 }
55}
56
57
58#endif
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
Definition AutoDispose.h:95
Store and operate with byte count.
Definition ByteCount.h:31
static const Unit MB
1000^2 Byte
Definition ByteCount.h:60
Just inherits Exception to separate media exceptions.
ProvideFileSpec & setOptional(bool val)
Set whether the resource is optional.
ProvideFileSpec & setDownloadSize(const zypp::ByteCount &val_r)
Set the downloadSize.
std::shared_ptr< Provide > parent() const
Definition provide.cc:927
AsyncOpRef< expected< repo::AsyncDownloadContextRef > > download(repo::AsyncDownloadContextRef dl, ProvideMediaHandle mediaHandle, ProgressObserverRef progressObserver=nullptr)
AsyncOpRef< expected< repo::AsyncDownloadContextRef > > downloadMasterIndex(repo::AsyncDownloadContextRef dl, ProvideMediaHandle mediaHandle, zypp::filesystem::Pathname masterIndex_r)
AsyncOpRef< expected< zypp::RepoStatus > > repoStatus(repo::AsyncDownloadContextRef dl, ProvideMediaHandle mediaHandle)
auto downloadMediaInfo(MediaHandle &&mediaHandle, const zypp::filesystem::Pathname &destdir)
ResultType and_then(const expected< T, E > &exp, Function &&f)
Definition expected.h:367
#define ZYPP_EXCPT_PTR(EXCPT)
Drops a logline and returns Exception as a std::exception_ptr.
Definition Exception.h:433