commit 8bf448010797e06f22608b09e220ac068c619d09
parent bbe4f099f6ea03993557451a0803c6a36ec89000
Author: Rich Lane <rlane@club.cc.cmu.edu>
Date: Fri, 14 Jan 2011 19:22:53 -0800
show progress in sup-sync
Diffstat:
5 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/bin/sup-sync b/bin/sup-sync
@@ -120,7 +120,7 @@ begin
num_added = num_updated = num_scanned = num_restored = 0
last_info_time = start_time = Time.now
- Redwood::PollManager.poll_from source do |action,m,old_m|
+ Redwood::PollManager.poll_from source do |action,m,old_m,progress|
if action == :delete
puts "Deleting #{m.id}"
elsif action == :add
@@ -176,7 +176,7 @@ begin
if Time.now - last_info_time > PROGRESS_UPDATE_INTERVAL
last_info_time = Time.now
elapsed = last_info_time - start_time
- pctdone = 0.0 * 100.0
+ pctdone = progress * 100.0
remaining = (100.0 - pctdone) * (elapsed.to_f / pctdone)
printf "## read %dm (~%.0f%%) @ %.1fm/s. %s elapsed, ~%s remaining\n", num_scanned, pctdone, num_scanned / elapsed, elapsed.to_time_s, remaining.to_time_s
end
diff --git a/lib/sup/maildir.rb b/lib/sup/maildir.rb
@@ -101,17 +101,17 @@ class Maildir < Source
debug "#{old_ids.size} in index, #{new_ids.size} in filesystem"
debug "#{added.size} added, #{deleted.size} deleted"
- added.each do |id|
+ added.each_with_index do |id,i|
yield :add,
:info => File.join(d,id),
:labels => @labels + maildir_labels(id) + [:inbox],
- :progress => 0.0
+ :progress => i.to_f/(added.size+deleted.size)
end
- deleted.each do |id|
+ deleted.each_with_index do |id,i|
yield :delete,
:info => File.join(d,id),
- :progress => 0.0
+ :progress => (i.to_f+added.size)/(added.size+deleted.size)
end
end
nil
diff --git a/lib/sup/mbox.rb b/lib/sup/mbox.rb
@@ -112,22 +112,19 @@ class MBox < Source
end
end
- def pct_done
- 0.0
- end
-
def default_labels
[:inbox, :unread]
end
def poll
- offset = first_new_message
+ first_offset = first_new_message
+ offset = first_offset
end_offset = File.size @f
while offset and offset < end_offset
yield :add,
:info => offset,
:labels => (labels + default_labels),
- :progress => 0.0
+ :progress => (offset - first_offset).to_f/end_offset
offset = next_offset offset
end
end
diff --git a/lib/sup/poll.rb b/lib/sup/poll.rb
@@ -110,7 +110,7 @@ EOS
num = 0
numi = 0
- poll_from source do |action,m,old_m|
+ poll_from source do |action,m,old_m,progress|
if action == :delete
yield "Deleting #{m.id}"
elsif action == :add
@@ -164,7 +164,7 @@ EOS
m.labels = old_m.labels + (m.labels - [:unread, :inbox]) if old_m
m.locations = old_m.locations + m.locations if old_m
HookManager.run "before-add-message", :message => m
- yield :add, m, old_m if block_given?
+ yield :add, m, old_m, args[:progress] if block_given?
Index.sync_message m, true
## We need to add or unhide the message when it either did not exist
@@ -176,7 +176,7 @@ EOS
when :delete
Index.each_message :location => [source.id, args[:info]] do |m|
m.locations.delete Location.new(source, args[:info])
- yield :delete, m, [source,args[:info]] if block_given?
+ yield :delete, m, [source,args[:info]], args[:progress] if block_given?
Index.sync_message m, false
#UpdateManager.relay self, :deleted, m
end
diff --git a/lib/sup/server.rb b/lib/sup/server.rb
@@ -97,7 +97,7 @@ private
SentManager.source.store_message Time.now, "test@example.com" do |io|
io.write raw
end
- PollManager.poll_from SentManager.source do |sym,m,old_m|
+ PollManager.poll_from SentManager.source do |sym,m,old_m,progress|
next unless sym == :add
m.labels = labels
end