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 '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 }
00088
00090
00091
00092
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 }
00106 }