Class: SolidMCP::Subscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_mcp/subscriber.rb

Instance Method Summary collapse

Constructor Details

#initialize(session_id, callbacks) ⇒ Subscriber

Returns a new instance of Subscriber.



9
10
11
12
13
14
15
16
17
# File 'lib/solid_mcp/subscriber.rb', line 9

def initialize(session_id, callbacks)
  @session_id = session_id
  @callbacks = callbacks
  @running = Concurrent::AtomicBoolean.new(false)
  @last_message_id = Concurrent::AtomicReference.new(0)
  @timer_task = nil
  @max_retries = ENV["RAILS_ENV"] == "test" ? 3 : Float::INFINITY
  @retry_count = 0
end

Instance Method Details

#startObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/solid_mcp/subscriber.rb', line 19

def start
  return if @running.true?

  @running.make_true
  @retry_count = 0

  @timer_task = Concurrent::TimerTask.new(
    execution_interval: SolidMCP.configuration.polling_interval,
    run_now: true
  ) do
    poll_once
  end

  @timer_task.execute
end

#stopObject



35
36
37
38
39
# File 'lib/solid_mcp/subscriber.rb', line 35

def stop
  @running.make_false
  @timer_task&.shutdown
  @timer_task&.wait_for_termination(5)
end