libzypp
10.5.0
|
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 'h': 00062 RETURN_IF( "http", ZConfig::instance().download_media_prefer_download() ? 2 : 1 ); 00063 RETURN_IF( "https", ZConfig::instance().download_media_prefer_download() ? 2 : 1 ); 00064 RETURN_IF( "hd", 4 ); 00065 break; 00066 00067 case 'n': 00068 RETURN_IF( "nfs", 3 ); 00069 RETURN_IF( "nfs4", 3 ); 00070 break; 00071 00072 case 's': 00073 RETURN_IF( "sftp", ZConfig::instance().download_media_prefer_download() ? 2 : 1 ); 00074 RETURN_IF( "smb", 3 ); 00075 break; 00076 #undef RETURN_IF 00077 } 00078 return 0; 00079 } 00080 00082 } // namespace 00084 00086 // 00087 // METHOD NAME : MediaPriority::MediaPriority 00088 // METHOD TYPE : Ctor 00089 // 00090 MediaPriority::MediaPriority( const std::string & scheme_r ) 00091 : _val( scheme2priority( scheme_r ) ) 00092 {} 00093 00094 MediaPriority::MediaPriority( const Url & url_r ) 00095 : _val( scheme2priority( url_r.getScheme() ) ) 00096 {} 00097 00099 } // namespace media 00102 } // namespace zypp