From 4c8440ee71ba819c7327913870a615186ef8d386 Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 16 Jul 2002 05:16:42 +0000 Subject: Various changes to 0.9.3, see CHANGELOG git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@157 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109 --- rdiff-backup/rdiff_backup/Time.py | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'rdiff-backup/rdiff_backup/Time.py') diff --git a/rdiff-backup/rdiff_backup/Time.py b/rdiff-backup/rdiff_backup/Time.py index 6220514..90d3ae8 100644 --- a/rdiff-backup/rdiff_backup/Time.py +++ b/rdiff-backup/rdiff_backup/Time.py @@ -25,17 +25,18 @@ _genstr_date_regexp1 = re.compile("^(?P[0-9]{4})[-/]" _genstr_date_regexp2 = re.compile("^(?P[0-9]{1,2})[-/]" "(?P[0-9]{1,2})[-/](?P[0-9]{4})$") curtime = curtimestr = None +been_awake_since = None # stores last time sleep() was run def setcurtime(curtime = None): """Sets the current time in curtime and curtimestr on all systems""" t = curtime or time.time() for conn in Globals.connections: - conn.Time.setcurtime_local(t, timetostring(t)) + conn.Time.setcurtime_local(t) -def setcurtime_local(timeinseconds, timestr): +def setcurtime_local(timeinseconds): """Only set the current time locally""" global curtime, curtimestr - curtime, curtimestr = timeinseconds, timestr + curtime, curtimestr = timeinseconds, timetostring(timeinseconds) def setprevtime(timeinseconds): """Sets the previous inc time in prevtime and prevtimestr""" @@ -168,6 +169,25 @@ def cmp(time1, time2): elif time1 == time2: return 0 else: return 1 + +def sleep(sleep_ratio): + """Sleep for period to maintain given sleep_ratio + + On my system sleeping for periods less than 1/20th of a second + doesn't seem to work very accurately, so accumulate at least that + much time before sleeping. + + """ + global been_awake_since + if been_awake_since is None: # first running + been_awake_since = time.time() + else: + elapsed_time = time.time() - been_awake_since + sleep_time = elapsed_time * (sleep_ratio/(1-sleep_ratio)) + if sleep_time >= 0.05: + time.sleep(sleep_time) + been_awake_since = time.time() + def genstrtotime(timestr, curtime = None): """Convert a generic time string to a time in seconds""" if curtime is None: curtime = globals()['curtime'] @@ -203,5 +223,3 @@ the day).""" % timestr) t = stringtotime(timestr) if t: return t else: error() - - -- cgit v1.2.1