Class: LLM::EventStream::Parser
- Inherits:
-
Object
- Object
- LLM::EventStream::Parser
- Defined in:
- lib/llm/eventstream/parser.rb
Defined Under Namespace
Classes: Visitor
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
12 13 14 15 16 17 |
# File 'lib/llm/eventstream/parser.rb', line 12 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
44 45 46 47 |
# File 'lib/llm/eventstream/parser.rb', line 44 def <<(event) @buffer << event each_line { parse!(_1) } end |
#body ⇒ String
Returns the internal buffer
52 53 54 55 |
# File 'lib/llm/eventstream/parser.rb', line 52 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
60 61 62 63 |
# File 'lib/llm/eventstream/parser.rb', line 60 def free @buffer.clear @cursor = 0 end |
#on(evtname, &block) ⇒ void
This method returns an undefined value.
Subscribe to an event
37 38 39 |
# File 'lib/llm/eventstream/parser.rb', line 37 def on(evtname, &block) @events[evtname.to_s] << block end |
#register(visitor) ⇒ void
This method returns an undefined value.
Register a visitor
23 24 25 26 27 28 29 30 |
# File 'lib/llm/eventstream/parser.rb', line 23 def register(visitor) @visitors << Visitor.new( visitor, visitor.respond_to?(:on_data), visitor.respond_to?(:on_event), visitor.respond_to?(:on_id), visitor.respond_to?(:on_retry), visitor.respond_to?(:on_chunk) ) end |