]> git.cworth.org Git - sup/blobdiff - lib/sup/mbox/loader.rb
major improvements in broken source handling
[sup] / lib / sup / mbox / loader.rb
index ec7de85258618745fe54e622a6a592bb330e9aa8..367f21d703a9338a76180508525d259c997e05f7 100644 (file)
@@ -4,8 +4,6 @@ module Redwood
 module MBox
 
 class Loader < Source
-  attr_reader :labels
-
   def initialize uri_or_fp, start_offset=nil, usual=true, archived=false, id=nil
     super
 
@@ -27,8 +25,12 @@ class Loader < Source
     end
   end
 
+  attr_writer :f
+  protected :f=
+
   def start_offset; 0; end
   def end_offset; File.size @f; end
+  def total; end_offset; end
 
   def load_header offset
     header = nil
@@ -45,6 +47,7 @@ class Loader < Source
   end
 
   def load_message offset
+    raise SourceError, self.broken_msg if broken?
     @mutex.synchronize do
       @f.seek offset
       begin
@@ -58,6 +61,7 @@ class Loader < Source
   end
 
   def raw_header offset
+    raise SourceError, self.broken_msg if broken?
     ret = ""
     @mutex.synchronize do
       @f.seek offset
@@ -69,6 +73,7 @@ class Loader < Source
   end
 
   def raw_full_message offset
+    raise SourceError, self.broken_msg if broken?
     ret = ""
     @mutex.synchronize do
       @f.seek offset
@@ -81,6 +86,7 @@ class Loader < Source
   end
 
   def next
+    raise SourceError, self.broken_msg if broken?
     returned_offset = nil
     next_offset = cur_offset
 
@@ -110,7 +116,7 @@ class Loader < Source
     end
 
     self.cur_offset = next_offset
-    [returned_offset, labels]
+    [returned_offset, @labels]
   end
 end