MediaPriority.cc

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00012 #include <iostream>
00013 #include "zypp/base/LogTools.h"
00014 
00015 #include "zypp/Url.h"
00016 #include "zypp/ZConfig.h"
00017 
00018 #include "zypp/media/MediaPriority.h"
00019 
00020 using std::endl;
00021 
00023 namespace zypp
00024 { 
00025 
00026   namespace media
00027   { 
00028 
00030     namespace
00031     { 
00032 
00040       MediaPriority::value_type scheme2priority(  const std::string & scheme_r )
00041       {
00042         switch ( scheme_r[0] )
00043         {
00044 #define RETURN_IF(scheme,value) \
00045         if ( ::strcmp( scheme+1, scheme_r.c_str()+1 ) == 0 ) return value;
00046           case 'c':
00047             RETURN_IF( "cd",    ZConfig::instance().download_media_prefer_download() ? 1 : 2 );
00048             RETURN_IF( "cifs",  3 );
00049             break;
00050 
00051           case 'd':
00052             RETURN_IF( "dvd",   ZConfig::instance().download_media_prefer_download() ? 1 : 2 );
00053             RETURN_IF( "dir",   4 );
00054             break;
00055 
00056           case 'f':
00057             RETURN_IF( "file",  4 );
00058             RETURN_IF( "ftp",   ZConfig::instance().download_media_prefer_download() ? 2 : 1);
00059             break;
00060           
00061           case 't':
00062             RETURN_IF( "tftp",  ZConfig::instance().download_media_prefer_download() ? 2 : 1);
00063             break;
00064 
00065           case 'h':
00066             RETURN_IF( "http",  ZConfig::instance().download_media_prefer_download() ? 2 : 1 );
00067             RETURN_IF( "https", ZConfig::instance().download_media_prefer_download() ? 2 : 1 );
00068             RETURN_IF( "hd",    4 );
00069             break;
00070 
00071           case 'n':
00072             RETURN_IF( "nfs",   3 );
00073             RETURN_IF( "nfs4",  3 );
00074             break;
00075 
00076           case 's':
00077             RETURN_IF( "sftp",  ZConfig::instance().download_media_prefer_download() ? 2 : 1 );
00078             RETURN_IF( "smb",   3 );
00079             break;
00080 #undef RETURN_IF
00081         }
00082         return 0;
00083       }
00084 
00086     } // namespace
00088 
00090     //
00091     //  METHOD NAME : MediaPriority::MediaPriority
00092     //  METHOD TYPE : Ctor
00093     //
00094     MediaPriority::MediaPriority( const std::string & scheme_r )
00095       : _val( scheme2priority( scheme_r ) )
00096     {}
00097 
00098     MediaPriority::MediaPriority( const Url & url_r )
00099       : _val( scheme2priority( url_r.getScheme() ) )
00100     {}
00101 
00103   } // namespace media
00106 } // namespace zypp

Generated on Tue May 5 14:43:17 2015 for libzypp by  doxygen 1.5.6