Skip to content

Commit b399efe

Browse files
committed
Add Actress::AdHoc actor
it's behavior is given by proc passed on initialization
1 parent f473249 commit b399efe

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

lib/concurrent/actress.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ module Actress
2626
require 'concurrent/actress/core'
2727
require 'concurrent/actress/context'
2828

29+
require 'concurrent/actress/ad_hoc'
30+
2931
# @return [Reference, nil] current executing actor if any
3032
def self.current
3133
Thread.current[:__current_actress__]

lib/concurrent/actress/ad_hoc.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module Concurrent
2+
module Actress
3+
class AdHoc
4+
include Context
5+
def initialize(&initializer)
6+
@on_message = Type! initializer.call, Proc
7+
end
8+
9+
def on_message(message)
10+
@on_message.call message
11+
end
12+
end
13+
end
14+
end

spec/actress.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def on_message(message)
1616
when :terminate
1717
terminate!
1818
when :child
19-
Ping.spawn :pong, @queue
19+
Concurrent::Actress::AdHoc.spawn(:pong) { -> m { @queue << m } }
2020
else
2121
@queue << message
2222
message
@@ -43,7 +43,6 @@ def assert condition
4343
end
4444

4545

46-
4746
Array.new(100).map do
4847
Thread.new do
4948
20.times do |i|

0 commit comments

Comments
 (0)