Author: jreidinger Date: Fri Mar 21 12:35:31 2008 New Revision: 9246 URL: http://svn.opensuse.org/viewcvs/zypp?rev=9246&view=rev Log: add new error IO_SOFT to media request callback for temporary connection problem. add new media exception timeout when somethink fail due to exceed timeout mediacurl throw timeout exception when timeouted (bnc #328822) Modified: trunk/libzypp/zypp/MediaSetAccess.cc trunk/libzypp/zypp/ZYppCallbacks.h trunk/libzypp/zypp/media/MediaCurl.cc trunk/libzypp/zypp/media/MediaException.cc trunk/libzypp/zypp/media/MediaException.h Modified: trunk/libzypp/zypp/MediaSetAccess.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/MediaSetAccess.cc?rev=9246&r1=9245&r2=9246&view=diff ============================================================================== --- trunk/libzypp/zypp/MediaSetAccess.cc (original) +++ trunk/libzypp/zypp/MediaSetAccess.cc Fri Mar 21 12:35:31 2008 @@ -141,6 +141,10 @@ { reason = media::MediaChangeReport::WRONG; } + else if( typeid(excp) == typeid( media::MediaTimeoutException)) + { + reason = media::MediaChangeReport::IO_SOFT; + } vector<string> devices; unsigned int devindex; Modified: trunk/libzypp/zypp/ZYppCallbacks.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/ZYppCallbacks.h?rev=9246&r1=9245&r2=9246&view=diff ============================================================================== --- trunk/libzypp/zypp/ZYppCallbacks.h (original) +++ trunk/libzypp/zypp/ZYppCallbacks.h Fri Mar 21 12:35:31 2008 @@ -292,7 +292,8 @@ NOT_FOUND, // the medie not found at all IO, // error accessing the media INVALID, // media is broken - WRONG // wrong media, need a different one + WRONG, // wrong media, need a different one + IO_SOFT /**< IO error which can happen on worse connection like timeout exceed */ }; /** Modified: trunk/libzypp/zypp/media/MediaCurl.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/media/MediaCurl.cc?rev=9246&r1=9245&r2=9246&view=diff ============================================================================== --- trunk/libzypp/zypp/media/MediaCurl.cc (original) +++ trunk/libzypp/zypp/media/MediaCurl.cc Fri Mar 21 12:35:31 2008 @@ -1078,7 +1078,9 @@ err = "Write error"; break; case CURLE_ABORTED_BY_CALLBACK: + case CURLE_OPERATION_TIMEOUTED: err = "Timeout reached"; + ZYPP_THROW(MediaTimeoutException(url)); break; case CURLE_SSL_PEER_CERTIFICATE: default: @@ -1295,9 +1297,11 @@ err = "Write error"; break; case CURLE_ABORTED_BY_CALLBACK: + case CURLE_OPERATION_TIMEDOUT: if( progressData.reached) { err = "Timeout reached"; + ZYPP_THROW(MediaTimeoutException(url)); } else { Modified: trunk/libzypp/zypp/media/MediaException.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/media/MediaException.cc?rev=9246&r1=9245&r2=9246&view=diff ============================================================================== --- trunk/libzypp/zypp/media/MediaException.cc (original) +++ trunk/libzypp/zypp/media/MediaException.cc Fri Mar 21 12:35:31 2008 @@ -201,6 +201,12 @@ return str << _msg << endl; } + std::ostream & MediaTimeoutException::dumpOn( std::ostream & str ) const + { + if (_msg.empty()) + return str << form(_("Timeout exceed when access '%s'."), _url.c_str()) << endl; + return str << _msg << endl; + } ///////////////////////////////////////////////////////////////// } // namespace media } // namespace zypp Modified: trunk/libzypp/zypp/media/MediaException.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/media/MediaException.h?rev=9246&r1=9245&r2=9246&view=diff ============================================================================== --- trunk/libzypp/zypp/media/MediaException.h (original) +++ trunk/libzypp/zypp/media/MediaException.h Fri Mar 21 12:35:31 2008 @@ -471,6 +471,20 @@ std::string _msg; }; + class MediaTimeoutException : public MediaException + { + public: + MediaTimeoutException(const Url & url_r, const std::string & msg = "Timeout exceed") + : MediaException(msg) + , _url(url_r.asString()), _msg(msg) + {} + virtual ~MediaTimeoutException() throw() {}; + protected: + virtual std::ostream & dumpOn( std::ostream & str ) const; + std::string _url; + std::string _msg; + }; + ///////////////////////////////////////////////////////////////// } // namespace media } // namespace zypp -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org