libzypp 9.41.1
|
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