Skip to content

Commit 7dbc8d8

Browse files
committed
Add utility actor for broadcasting messages
1 parent 6f57449 commit 7dbc8d8

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

lib/concurrent/actor/utills.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module Concurrent
2+
module Actor
3+
module Utils
4+
require 'concurrent/actor/utils/broadcast'
5+
end
6+
end
7+
end
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
require 'set'
2+
3+
module Concurrent
4+
module Actor
5+
module Utils
6+
class Broadcast < Context
7+
8+
def initialize
9+
@receivers = Set.new
10+
end
11+
12+
def on_message(message)
13+
case message
14+
when :subscribe
15+
@receivers.add envelope.sender
16+
when :unsubscribe
17+
@receivers.delete envelope.sender
18+
when :subscribed?
19+
@receivers.include? envelope.sender
20+
else
21+
@receivers.each { |r| r << message }
22+
end
23+
end
24+
25+
# override to define different behaviour, filtering etc
26+
def receivers
27+
@receivers
28+
end
29+
end
30+
end
31+
end
32+
end

0 commit comments

Comments
 (0)