class Bio::MAF::CompletionTracker

Attributes

delayed[R]
offsets[R]
queue[R]

Public Class Methods

new(fetch_list) click to toggle source
# File lib/bio/maf/parser.rb, line 1018
def initialize(fetch_list)
  @offsets = fetch_list.collect { |e| e[0] }
  @queue = java.util.concurrent.LinkedBlockingQueue.new(128)
  @delayed = {}
  @sem = Mutex.new
end

Public Instance Methods

<<(blocks) click to toggle source
# File lib/bio/maf/parser.rb, line 1029
def <<(blocks)
  @sem.synchronize do
    f_offset = blocks.first.offset
    if f_offset == next_expected
      offsets.shift
      queue.put(blocks)
      drain_delayed
    else
      # out of order
      delayed[f_offset] = blocks
    end
  end
end
drain_delayed() click to toggle source
# File lib/bio/maf/parser.rb, line 1043
def drain_delayed
  while e = delayed.delete(next_expected)
    offsets.shift
    queue.put(e)
  end
end
next_expected() click to toggle source
# File lib/bio/maf/parser.rb, line 1025
def next_expected
  offsets.first
end