Class: SolidMCP::TestPubSub
- Inherits:
-
Object
- Object
- SolidMCP::TestPubSub
- Defined in:
- lib/solid_mcp/test_pub_sub.rb
Overview
Test implementation of PubSub for use in tests
Instance Attribute Summary collapse
-
#messages ⇒ Object
readonly
Returns the value of attribute messages.
-
#subscriptions ⇒ Object
readonly
Returns the value of attribute subscriptions.
Instance Method Summary collapse
- #broadcast(session_id, event_type, data) ⇒ Object
-
#initialize(options = {}) ⇒ TestPubSub
constructor
A new instance of TestPubSub.
- #shutdown ⇒ Object
- #subscribe(session_id, &block) ⇒ Object
- #unsubscribe(session_id) ⇒ Object
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( = {}) = @subscriptions = Concurrent::Map.new = Concurrent::Array.new end |
Instance Attribute Details
#messages ⇒ Object (readonly)
Returns the value of attribute messages.
9 10 11 |
# File 'lib/solid_mcp/test_pub_sub.rb', line 9 def end |
#subscriptions ⇒ Object (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) = { session_id: session_id, event_type: event_type, data: data } << callbacks = @subscriptions[session_id] || [] callbacks.each do |callback| callback.call({ event_type: event_type, data: data }) end end |
#shutdown ⇒ Object
36 37 38 39 |
# File 'lib/solid_mcp/test_pub_sub.rb', line 36 def shutdown @subscriptions.clear .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 |