[zypp-commit] r9248 - in /trunk/zypper/src: zypper-media-callbacks.h zypper-prompt.cc zypper-prompt.h
Author: jreidinger
Date: Fri Mar 21 12:41:48 2008
New Revision: 9248
URL: http://svn.opensuse.org/viewcvs/zypp?rev=9248&view=rev
Log:
add new call for abort/request/ignore question with timeout
in media request callback add this call for temporary network problems, and first three run have retry as default and then abort is default (bnc #328822)
Modified:
trunk/zypper/src/zypper-media-callbacks.h
trunk/zypper/src/zypper-prompt.cc
trunk/zypper/src/zypper-prompt.h
Modified: trunk/zypper/src/zypper-media-callbacks.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/zypper/src/zypper-media-callbacks.h?rev=9248&r1=9247&r2=9248&view=diff
==============================================================================
--- trunk/zypper/src/zypper-media-callbacks.h (original)
+++ trunk/zypper/src/zypper-media-callbacks.h Fri Mar 21 12:41:48 2008
@@ -24,12 +24,34 @@
#include "zypper-prompt.h"
#include "output/prompt.h"
+#define REPEAT_LIMIT 3
+
using zypp::media::MediaChangeReport;
using zypp::media::DownloadProgressReport;
///////////////////////////////////////////////////////////////////
namespace ZmartRecipients
{
+ class repeat_counter_ {
+ private:
+ zypp::Url url;
+ unsigned counter;
+ public:
+ repeat_counter_():counter(0){}
+ bool counter_overrun(const zypp::Url & u){
+ if (u==url)
+ {
+ if (++counter==REPEAT_LIMIT)
+ return true;
+ }
+ else
+ {
+ url = u;
+ counter = 0;
+ }
+ return false;
+ }
+ };
struct MediaChangeReportReceiver : public zypp::callback::ReceiveReport<MediaChangeReport>
{
@@ -65,9 +87,20 @@
return MediaChangeReport::ABORT;
}
+ if (error == MediaChangeReport::IO_SOFT)
+ {
+ MediaChangeReport::Action action = MediaChangeReport::RETRY;
+ if (repeat_counter.counter_overrun(url))
+ action = MediaChangeReport::ABORT;
+ return (Action) read_action_ari_with_timeout(PROMPT_ARI_MEDIA_PROBLEM,
+ 30,action);
+ }
+
return (Action) read_action_ari(PROMPT_ARI_MEDIA_PROBLEM
,MediaChangeReport::ABORT);
}
+ private:
+ repeat_counter_ repeat_counter;
};
// progress for downloading a file
Modified: trunk/zypper/src/zypper-prompt.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/zypper/src/zypper-prompt.cc?rev=9248&r1=9247&r2=9248&view=diff
==============================================================================
--- trunk/zypper/src/zypper-prompt.cc (original)
+++ trunk/zypper/src/zypper-prompt.cc Fri Mar 21 12:41:48 2008
@@ -1,5 +1,6 @@
#include
participants (1)
-
jreidinger@svn.opensuse.org