Parent

Included Modules

Class/Module Index [+]

Quicksearch

Redwood::SourceManager

Public Class Methods

new() click to toggle source
# File lib/sup/source.rb, line 182
def initialize
  @sources = {}
  @sources_dirty = false
  @source_mutex = Monitor.new
end

Public Instance Methods

[](id) click to toggle source
# File lib/sup/source.rb, line 188
def [](id)
  @source_mutex.synchronize { @sources[id] }
end
add_source(source) click to toggle source
# File lib/sup/source.rb, line 192
def add_source source
  @source_mutex.synchronize do
    raise "duplicate source!" if @sources.include? source
    @sources_dirty = true
    max = @sources.max_of { |id, s| s.is_a?(DraftLoader) || s.is_a?(SentLoader) ? 0 : id }
    source.id ||= (max || 0) + 1
    ##source.id += 1 while @sources.member? source.id
    @sources[source.id] = source
  end
end
load_sources(fn=Redwood::SOURCE_FN) click to toggle source
# File lib/sup/source.rb, line 212
def load_sources fn=Redwood::SOURCE_FN
  source_array = (Redwood::load_yaml_obj(fn) || []).map { |o| Recoverable.new o }
  @source_mutex.synchronize do
    @sources = Hash[*(source_array).map { |s| [s.id, s] }.flatten]
    @sources_dirty = false
  end
end
save_sources(fn=Redwood::SOURCE_FN) click to toggle source
# File lib/sup/source.rb, line 220
def save_sources fn=Redwood::SOURCE_FN
  @source_mutex.synchronize do
    if @sources_dirty || @sources.any? { |id, s| s.dirty? }
      bakfn = fn + ".bak"
      if File.exists? fn
        File.chmod 0600, fn
        FileUtils.mv fn, bakfn, :force => true unless File.exists?(bakfn) && File.size(fn) == 0
      end
      Redwood::save_yaml_obj sources, fn, true
      File.chmod 0600, fn
    end
    @sources_dirty = false
  end
end
source_for(uri;) click to toggle source
# File lib/sup/source.rb, line 208
def source_for uri; sources.find { |s| s.is_source_for? uri }; end
sources() click to toggle source
# File lib/sup/source.rb, line 203
def sources
  ## favour the inbox by listing non-archived sources first
  @source_mutex.synchronize { @sources.values }.sort_by { |s| s.id }.partition { |s| !s.archived? }.flatten
end
unusual_sources() click to toggle source
# File lib/sup/source.rb, line 210
def unusual_sources; sources.find_all { |s| !s.usual? }; end
usual_sources() click to toggle source
# File lib/sup/source.rb, line 209
def usual_sources; sources.find_all { |s| s.usual? }; end

[Validate]

Generated with the Darkfish Rdoc Generator 2.