Class: FrameJournal

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

Instance Method Summary collapse

Constructor Details

#initialize(directory = 'frame-journal', snap_freq = 60 * 5) ⇒ FrameJournal

Returns a new instance of FrameJournal.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/frame_journal.rb', line 50

def initialize(directory='frame-journal', snap_freq = 60 * 5)
  @directory = directory
  @mad = AutomaticSnapshotMadeleine.new(directory) do
    MadFrameJournal.new
  end
  
  # always snap on startup, in case we had an previous failure
  @modified = true
  Thread.new(@mad, snap_freq) do |mad, freq|
    while true
      sleep(freq)
      mad.take_snapshot if @modified
      @modified = false
    end
  end
end

Instance Method Details

#[](msgid) ⇒ Object



72
73
74
# File 'lib/frame_journal.rb', line 72

def [](msgid)
  @mad.system.lookup(msgid)
end

#[]=(msgid, frame) ⇒ Object



67
68
69
70
# File 'lib/frame_journal.rb', line 67

def []=(msgid, frame)
  @modified = true
  @mad.system.add(msgid, frame)
end

#clearObject



85
86
87
88
89
# File 'lib/frame_journal.rb', line 85

def clear
  @modified = true
  @mad.system.clear
  @mad.take_snapshot
end

#delete(msgid) ⇒ Object



76
77
78
79
# File 'lib/frame_journal.rb', line 76

def delete(msgid)
  @modified = true
  @mad.system.delete(msgid)
end

#indexObject



91
92
93
# File 'lib/frame_journal.rb', line 91

def index
  @mad.system.frame_index
end

#keysObject



81
82
83
# File 'lib/frame_journal.rb', line 81

def keys
  @mad.system.frames.keys
end

#next_indexObject



95
96
97
98
# File 'lib/frame_journal.rb', line 95

def next_index
  @modified = true
  @mad.system.frame_index += 1
end

#system_idObject



100
101
102
103
104
105
106
107
108
# File 'lib/frame_journal.rb', line 100

def system_id
  unless name = @mad.system.system_id
    # todo - grab default name from some place smarter...
    @modified = true
    @mad.system.system_id = 'cmastomp'
    name = @mad.system.system_id
  end 
  name
end