Class: LLM::EventStream::Parser
- Inherits:
-
Object
- Object
- LLM::EventStream::Parser
- Defined in:
- lib/llm/eventstream/parser.rb
Constant Summary collapse
- COMPACT_THRESHOLD =
4096
Instance Method Summary collapse
-
#<<(event) ⇒ void
Append an event to the internal buffer.
-
#body ⇒ String
Returns the internal buffer.
-
#free ⇒ void
Free the internal buffer.
- #initialize ⇒ LLM::EventStream::Parser constructor
-
#on(evtname, &block) ⇒ void
Subscribe to an event.
-
#register(visitor) ⇒ void
Register a visitor.
Constructor Details
#initialize ⇒ LLM::EventStream::Parser
11 12 13 14 15 16 |
# File 'lib/llm/eventstream/parser.rb', line 11 def initialize @buffer = +"" @events = Hash.new { |h, k| h[k] = [] } @cursor = 0 @visitors = [] end |
Instance Method Details
#<<(event) ⇒ void
This method returns an undefined value.
Append an event to the internal buffer
38 39 40 41 |
# File 'lib/llm/eventstream/parser.rb', line 38 def <<(event) @buffer << event each_line { parse!(_1) } end |
#body ⇒ String
Returns the internal buffer
46 47 48 49 |
# File 'lib/llm/eventstream/parser.rb', line 46 def body return @buffer.dup if @cursor.zero? @buffer.byteslice(@cursor, @buffer.bytesize - @cursor) || +"" end |
#free ⇒ void
This method returns an undefined value.
Free the internal buffer
54 55 56 57 |
# File 'lib/llm/eventstream/parser.rb', line 54 def free @buffer.clear @cursor = 0 end |
#on(evtname, &block) ⇒ void
This method returns an undefined value.
Subscribe to an event
31 32 33 |
# File 'lib/llm/eventstream/parser.rb', line 31 def on(evtname, &block) @events[evtname.to_s] << block end |
#register(visitor) ⇒ void
This method returns an undefined value.
Register a visitor
22 23 24 |
# File 'lib/llm/eventstream/parser.rb', line 22 def register(visitor) @visitors << visitor end |