Class: RailsAi::Performance::StreamProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_ai/performance.rb

Overview

Memory-efficient streaming

Instance Method Summary collapse

Constructor Details

#initialize(chunk_size: 1024) ⇒ StreamProcessor

Returns a new instance of StreamProcessor.



71
72
73
# File 'lib/rails_ai/performance.rb', line 71

def initialize(chunk_size: 1024)
  @chunk_size = chunk_size
end

Instance Method Details

#process_stream(stream) {|buffer| ... } ⇒ Object

Yields:

  • (buffer)


75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/rails_ai/performance.rb', line 75

def process_stream(stream, &block)
  buffer = String.new(capacity: @chunk_size)
  
  stream.each_chunk(@chunk_size) do |chunk|
    buffer << chunk
    
    if buffer.bytesize >= @chunk_size
      yield(buffer.dup)
      buffer.clear
    end
  end
  
  yield(buffer) if buffer.bytesize > 0
end