Imported Upstream version 17.6.0
[platform/upstream/libzypp.git] / zypp / MediaSetAccess.cc
index 940c26a..9a6a239 100644 (file)
@@ -109,10 +109,11 @@ IMPL_PTR_TYPE(MediaSetAccess);
   struct ProvideFileOperation
   {
     Pathname result;
+    ByteCount expectedFileSize;
     void operator()( media::MediaAccessId media, const Pathname &file )
     {
       media::MediaManager media_mgr;
-      media_mgr.provideFile(media, file);
+      media_mgr.provideFile(media, file, expectedFileSize);
       result = media_mgr.localPath(media, file);
     }
   };
@@ -158,6 +159,7 @@ IMPL_PTR_TYPE(MediaSetAccess);
   Pathname MediaSetAccess::provideFile( const OnMediaLocation & resource, ProvideFileOptions options, const Pathname &deltafile )
   {
     ProvideFileOperation op;
+    op.expectedFileSize = resource.downloadSize();
     provide( boost::ref(op), resource, options, deltafile );
     return op.result;
   }
@@ -171,6 +173,20 @@ IMPL_PTR_TYPE(MediaSetAccess);
     return op.result;
   }
 
+  Pathname MediaSetAccess::provideOptionalFile( const Pathname & file, unsigned media_nr )
+  {
+    try
+    {
+      if ( doesFileExist( file, media_nr ) )
+       return provideFile( file, media_nr, PROVIDE_NON_INTERACTIVE );
+    }
+    catch ( const media::MediaFileNotFoundException & excpt_r )
+    { ZYPP_CAUGHT( excpt_r ); }
+    catch ( const media::MediaNotAFileException & excpt_r )
+    { ZYPP_CAUGHT( excpt_r ); }
+   return Pathname();
+  }
+
   ManagedFile MediaSetAccess::provideFileFromUrl(const Url &file_url, ProvideFileOptions options)
   {
     Url url(file_url);
@@ -189,18 +205,17 @@ IMPL_PTR_TYPE(MediaSetAccess);
     return tmpFile;
   }
 
-  Pathname MediaSetAccess::provideOptionalFile( const Pathname & file, unsigned media_nr )
+  ManagedFile MediaSetAccess::provideOptionalFileFromUrl( const Url & file_url )
   {
     try
     {
-      if ( doesFileExist( file, media_nr ) )
-       return provideFile( file, media_nr, PROVIDE_NON_INTERACTIVE );
+      return provideFileFromUrl( file_url, PROVIDE_NON_INTERACTIVE );
     }
     catch ( const media::MediaFileNotFoundException & excpt_r )
     { ZYPP_CAUGHT( excpt_r ); }
     catch ( const media::MediaNotAFileException & excpt_r )
     { ZYPP_CAUGHT( excpt_r ); }
-   return Pathname();
+   return ManagedFile();
   }
 
   bool MediaSetAccess::doesFileExist(const Pathname & file, unsigned media_nr )