Class: SolidMCP::TestPubSub

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

Overview

Test implementation of PubSub for use in tests

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ TestPubSub

Returns a new instance of TestPubSub.



11
12
13
14
15
# File 'lib/solid_mcp/test_pub_sub.rb', line 11

def initialize(options = {})
  @options = options
  @subscriptions = Concurrent::Map.new
  @messages = Concurrent::Array.new
end

Instance Attribute Details

#messagesObject (readonly)

Returns the value of attribute messages.



9
10
11
# File 'lib/solid_mcp/test_pub_sub.rb', line 9

def messages
  @messages
end

#subscriptionsObject (readonly)

Returns the value of attribute subscriptions.



9
10
11
# File 'lib/solid_mcp/test_pub_sub.rb', line 9

def subscriptions
  @subscriptions
end

Instance Method Details

#broadcast(session_id, event_type, data) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/solid_mcp/test_pub_sub.rb', line 26

def broadcast(session_id, event_type, data)
  message = { session_id: session_id, event_type: event_type, data: data }
  @messages << message
  
  callbacks = @subscriptions[session_id] || []
  callbacks.each do |callback|
    callback.call({ event_type: event_type, data: data })
  end
end

#shutdownObject



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

def shutdown
  @subscriptions.clear
  @messages.clear
end

#subscribe(session_id, &block) ⇒ Object



17
18
19
20
# File 'lib/solid_mcp/test_pub_sub.rb', line 17

def subscribe(session_id, &block)
  @subscriptions[session_id] ||= Concurrent::Array.new
  @subscriptions[session_id] << block
end

#unsubscribe(session_id) ⇒ Object



22
23
24
# File 'lib/solid_mcp/test_pub_sub.rb', line 22

def unsubscribe(session_id)
  @subscriptions.delete(session_id)
end