Class: Philiprehberger::AuditTrail::MemoryStore

Inherits:
Object
  • Object
show all
Defined in:
lib/philiprehberger/audit_trail/memory_store.rb

Overview

Thread-safe in-memory storage for audit events.

Instance Method Summary collapse

Constructor Details

#initializeMemoryStore

Returns a new instance of MemoryStore.



7
8
9
10
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 7

def initialize
  @events = []
  @mutex = Mutex.new
end

Instance Method Details

#allArray<Event>

Return all stored events.

Returns:

  • (Array<Event>)

    all events



32
33
34
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 32

def all
  @mutex.synchronize { @events.dup }
end

#clear!void

This method returns an undefined value.

Remove all events from the store.



39
40
41
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 39

def clear!
  @mutex.synchronize { @events.clear }
end

#push(event) ⇒ Event

Append an event to the store.

Parameters:

  • event (Event)

    the audit event to store

Returns:

  • (Event)

    the stored event



16
17
18
19
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 16

def push(event)
  @mutex.synchronize { @events << event }
  event
end

#push_all(events) ⇒ Array<Event>

Append multiple events to the store.

Parameters:

  • events (Array<Event>)

    the audit events to store

Returns:

  • (Array<Event>)

    the stored events



47
48
49
50
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 47

def push_all(events)
  @mutex.synchronize { @events.concat(events) }
  events
end

#reject! {|Event| ... } ⇒ Array<Event>

Remove events matching the block.

Yields:

  • (Event)

    block returning true for events to remove

Returns:

  • (Array<Event>)

    removed events



56
57
58
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 56

def reject!(&block)
  @mutex.synchronize { @events.reject!(&block) }
end

#select {|Event| ... } ⇒ Array<Event>

Filter events using a block.

Yields:

  • (Event)

    block to filter events

Returns:

  • (Array<Event>)

    matching events



25
26
27
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 25

def select(&block)
  @mutex.synchronize { @events.select(&block) }
end

#sizeInteger

Return the number of stored events.

Returns:

  • (Integer)

    event count



63
64
65
# File 'lib/philiprehberger/audit_trail/memory_store.rb', line 63

def size
  @mutex.synchronize { @events.size }
end