Class: EventStoreRuby::EventStream
- Inherits:
-
Object
- Object
- EventStoreRuby::EventStream
- Defined in:
- lib/eventstore_ruby/event_stream.rb
Overview
In-memory append-only event sequence.
Instance Attribute Summary collapse
-
#event_records ⇒ Object
readonly
Returns the value of attribute event_records.
Instance Method Summary collapse
-
#append(events) ⇒ Object
Appends Event objects, returns newly created EventRecord objects.
-
#initialize ⇒ EventStream
constructor
A new instance of EventStream.
Constructor Details
#initialize ⇒ EventStream
Returns a new instance of EventStream.
6 7 8 9 10 |
# File 'lib/eventstore_ruby/event_stream.rb', line 6 def initialize @event_records = [] @last_sequence_number = 0 @mutex = Mutex.new end |
Instance Attribute Details
#event_records ⇒ Object (readonly)
Returns the value of attribute event_records.
4 5 6 |
# File 'lib/eventstore_ruby/event_stream.rb', line 4 def event_records @event_records end |
Instance Method Details
#append(events) ⇒ Object
Appends Event objects, returns newly created EventRecord objects.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/eventstore_ruby/event_stream.rb', line 13 def append(events) raise ArgumentError, 'events must be an Array' unless events.is_a?(Array) @mutex.synchronize do records = events.map do |event| EventRecord.new( sequence_number: (@last_sequence_number += 1), timestamp: Time.now, event_type: event.event_type, payload: event.payload ) end @event_records.concat(records) records end end |