self.class.i_am_the_instance self
end
- def self.source_name; "sent"; end
+ def self.source_name; "sup://sent"; end
def self.source_id; 9998; end
- def new_source; @source = SentLoader.new @fn; end
+ def new_source; @source = Recoverable.new SentLoader.new; end
def write_sent_message date, from_email
need_blank = File.exists?(@fn) && !File.zero?(@fn)
File.open(@fn, "a") do |f|
- if need_blank
- @source.increment_offset if @source.offset == f.tell
- f.puts
- end
+ f.puts if need_blank
f.puts "From #{from_email} #{date}"
yield f
end
@source.each do |offset, labels|
- m = Message.new @source, offset, labels
- Index.add_message m
- UpdateManager.relay :add, m
+ m = Message.new :source => @source, :source_info => offset, :labels => @source.labels
+ Index.sync_message m
+ UpdateManager.relay self, :add, m
end
end
end
class SentLoader < MBox::Loader
- def initialize filename, end_offset=0
- File.open(filename, "w") { } unless File.exists? filename
- super filename, end_offset, true, true
+ yaml_properties :cur_offset
+
+ def initialize cur_offset=0
+ @filename = Redwood::SENT_FN
+ File.open(@filename, "w") { } unless File.exists? @filename
+ super "mbox://" + @filename, cur_offset, true, true
end
- def increment_offset; @end_offset += 1; end
- def offset; @end_offset; end
- def id; SentManager.source_id; end
- def to_s; SentManager.source_name; end
+ def file_path; @filename end
+ def uri; SentManager.source_name; end
+ def to_s; SentManager.source_name; end
+ def id; SentManager.source_id; end
def labels; [:sent, :inbox]; end
end
-Redwood::register_yaml(SentLoader, %w(filename end_offset))
-
end