30    template<
class Executor, 
class OpType>
 
   31    struct StatusLogic : 
public LogicBase<Executor, OpType>{
 
   37      using ZyppContextType = 
typename DlContextRefType::element_type::ContextType;
 
   38      using ProvideType     = 
typename ZyppContextType::ProvideType;
 
   39      using MediaHandle     = 
typename ProvideType::MediaHandle;
 
   42      StatusLogic( DlContextRefType ctx, MediaHandle &&
media  )
 
   43        : _ctx(std::move(ctx))
 
   44        , _handle(std::move(
media))
 
   47      MaybeAsyncRef<expected<zypp::RepoStatus>> execute() {
 
   48        return _ctx->zyppContext()->provider()->provide( _handle, _ctx->repoInfo().path() / 
"/repodata/repomd.xml" , 
ProvideFileSpec().setMirrorsAllowed(
false) )
 
   56              if ( !status.
empty() && _ctx->repoInfo ().requireStatusWithMediaFile()) {
 
   57                return _ctx->zyppContext()->provider()->provide( _handle, 
"/media.1/media"  , 
ProvideFileSpec().setMirrorsAllowed(
false) )
 
   69      DlContextRefType _ctx;
 
   89    template<
class Executor, 
class OpType>
 
   96      using ZyppContextType = 
typename DlContextRefType::element_type::ContextType;
 
   97      using ProvideType     = 
typename ZyppContextType::ProvideType;
 
   98      using MediaHandle     = 
typename ProvideType::MediaHandle;
 
  101      DlLogic( DlContextRefType ctx, MediaHandle &&mediaHandle, ProgressObserverRef &&progressObserver )
 
  102        : 
zypp::
repo::yum::RepomdFileCollector( ctx->destDir() )
 
  103        , _ctx( 
std::move(ctx))
 
  104        , _mediaHandle(
std::move(mediaHandle))
 
  105        , _progressObserver(
std::move(progressObserver))
 
  114              if ( mediaInfo ) _ctx->files().push_back ( std::move(mediaInfo.get()) );
 
  116              if ( _progressObserver ) _progressObserver->inc();
 
  120                | 
and_then( [
this] ( DlContextRefType && ) {
 
  123                    std::vector<zypp::OnMediaLocation> requiredFiles;
 
  126                      finalize([&]( 
const zypp::OnMediaLocation &file ){
 
  129                          ZYPP_THROW(zypp::repo::RepoException( _ctx->repoInfo(), 
"Repo can only require metadata files from primary medium."));
 
  131                        requiredFiles.push_back( file );
 
  138                    if ( _progressObserver ) _progressObserver->setBaseSteps ( _progressObserver->baseSteps () + requiredFiles.size() );
 
  140                    return transform_collect  ( std::move(requiredFiles), [
this]( zypp::OnMediaLocation file ) {
 
  145                    }) | 
and_then ( [
this]( std::vector<zypp::ManagedFile> &&dlFiles ) {
 
  146                      auto &downloadedFiles = _ctx->files();
 
  147                      downloadedFiles.insert( downloadedFiles.end(), std::make_move_iterator(dlFiles.begin()), std::make_move_iterator(dlFiles.end()) );
 
  157      const zypp::RepoInfo &repoInfo()
 const override {
 
  158        return _ctx->repoInfo();
 
  161      const zypp::filesystem::Pathname &deltaDir()
 const override {
 
  162        return _ctx->deltaDir();
 
  165      DlContextRefType _ctx;
 
  166      MediaHandle _mediaHandle;
 
  167      ProgressObserverRef _progressObserver;
 
 
Track changing files or directories.
bool empty() const
Whether the status is empty (empty checksum)