Class: Ollama::Events

Inherits:
Object
  • Object
show all
Defined in:
lib/ollama/events.rb

Overview

Event system for the Ollama client. Provides pub/sub for request lifecycle events.

Instance Method Summary collapse

Constructor Details

#initializeEvents

Returns a new instance of Events.



7
8
9
# File 'lib/ollama/events.rb', line 7

def initialize
  @subscribers = Hash.new { |h, k| h[k] = [] }
end

Instance Method Details

#clear(event) ⇒ Integer

Clear all subscribers for an event

Parameters:

  • event (Symbol)

    Event name

Returns:

  • (Integer)

    Number of subscribers cleared



44
45
46
47
48
# File 'lib/ollama/events.rb', line 44

def clear(event)
  count = @subscribers[event].size
  @subscribers[event].clear
  count
end

#clear_allObject

Clear all subscribers for all events



51
52
53
# File 'lib/ollama/events.rb', line 51

def clear_all
  @subscribers.clear
end

#publish(event, payload = {}) ⇒ Array

Publish an event to all subscribers

Parameters:

  • event (Symbol)

    Event name

  • payload (Hash) (defaults to: {})

    Event data

Returns:

  • (Array)

    Results from all subscribers



32
33
34
35
36
37
38
39
# File 'lib/ollama/events.rb', line 32

def publish(event, payload = {})
  @subscribers[event].map do |subscriber|
    subscriber.call(payload)
  rescue StandardError => e
    warn "[Ollama::Events] Subscriber error for #{event}: #{e.message}"
    nil
  end
end

#subscribe(event, &block) ⇒ Proc

Subscribe to an event

Parameters:

  • event (Symbol)

    Event name

  • block (Proc)

    Callback to execute

Returns:

  • (Proc)

    The subscribed block



15
16
17
18
# File 'lib/ollama/events.rb', line 15

def subscribe(event, &block)
  @subscribers[event] << block
  block
end

#unsubscribe(event, block) ⇒ Boolean

Unsubscribe from an event

Parameters:

  • event (Symbol)

    Event name

  • block (Proc)

    The block to remove

Returns:

  • (Boolean)

    True if block was found and removed



24
25
26
# File 'lib/ollama/events.rb', line 24

def unsubscribe(event, block)
  @subscribers[event].delete(block)
end