Class: Fit4Ruby::FitMessageIdMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/fit4ruby/FitMessageIdMapper.rb

Defined Under Namespace

Classes: Entry

Instance Method Summary collapse

Constructor Details

#initializeFitMessageIdMapper

Returns a new instance of FitMessageIdMapper.



20
21
22
# File 'lib/fit4ruby/FitMessageIdMapper.rb', line 20

def initialize
  @entries = Array.new(16, nil)
end

Instance Method Details

#add_global(id) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/fit4ruby/FitMessageIdMapper.rb', line 24

def add_global(id)
  unless (slot = @entries.index { |e| e.nil? })
    puts @entries.inspect
    # No more free slots. We have to find the least recently used one.
    slot = 0
    0.upto(15) do |i|
      if i != slot && @entries[slot].last_use > @entries[i].last_use
        slot = i
      end
    end
  end
  @entries[slot] = Entry.new(id, Time.now)

  slot
end

#get_local(id) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/fit4ruby/FitMessageIdMapper.rb', line 40

def get_local(id)
  0.upto(15) do |i|
    if (entry = @entries[i]) && entry.global_id == id
      entry.last_use = Time.now
      return i
    end
  end
  nil
end