Class: Ask::SessionProtocol::Events::Event
- Inherits:
-
Data
- Object
- Data
- Ask::SessionProtocol::Events::Event
- Defined in:
- lib/ask/session_protocol/events.rb
Overview
An event on the wire. Immutable; validate on construction.
Instance Attribute Summary collapse
-
#payload ⇒ Object
readonly
Returns the value of attribute payload.
-
#seq ⇒ Object
readonly
Returns the value of attribute seq.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
Instance Method Summary collapse
-
#initialize(type:, seq:, payload: {}) ⇒ Event
constructor
A new instance of Event.
-
#to_h ⇒ Object
Wire shape: { "type" => ..., "seq" => ..., "payload" => ... }.
Constructor Details
#initialize(type:, seq:, payload: {}) ⇒ Event
Returns a new instance of Event.
210 211 212 213 214 215 216 217 218 219 220 |
# File 'lib/ask/session_protocol/events.rb', line 210 def initialize(type:, seq:, payload: {}) unless Events.known?(type) raise ArgumentError, "unknown session event type: #{type.inspect}" end unless seq.is_a?(Integer) && seq.positive? raise ArgumentError, "event seq must be a positive integer, got: #{seq.inspect}" end raise ArgumentError, "event payload must be a Hash, got: #{payload.class}" unless payload.is_a?(Hash) super(type: type, seq: seq, payload: payload.freeze) end |
Instance Attribute Details
#payload ⇒ Object (readonly)
Returns the value of attribute payload
206 207 208 |
# File 'lib/ask/session_protocol/events.rb', line 206 def payload @payload end |
#seq ⇒ Object (readonly)
Returns the value of attribute seq
206 207 208 |
# File 'lib/ask/session_protocol/events.rb', line 206 def seq @seq end |
#type ⇒ Object (readonly)
Returns the value of attribute type
206 207 208 |
# File 'lib/ask/session_protocol/events.rb', line 206 def type @type end |
Instance Method Details
#to_h ⇒ Object
Wire shape: { "type" => ..., "seq" => ..., "payload" => ... }
223 224 225 |
# File 'lib/ask/session_protocol/events.rb', line 223 def to_h { "type" => type, "seq" => seq, "payload" => payload } end |