MediaPriority.cc
Go to the documentation of this file.00001
00002
00003
00004
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 }
00084
00086
00087
00088
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 }
00102 }