Skip to content

Commit d16bbec

Browse files
committed
Linking behavior responds to :linked message by returning array of linked actors
1 parent 6ed9e81 commit d16bbec

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

lib/concurrent/actor/behaviour/linking.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ def initialize(core, subsequent, core_options)
4646
@linked.add Actor.current if core_options[:link] != false
4747
end
4848

49-
# TODO also handle :linked_actors returning array
50-
5149
def on_envelope(envelope)
5250
case envelope.message
5351
when :link
@@ -56,6 +54,8 @@ def on_envelope(envelope)
5654
unlink envelope.sender
5755
when :linked?
5856
@linked.include? envelope.sender
57+
when :linked
58+
@linked.to_a
5959
else
6060
pass envelope
6161
end

spec/concurrent/actor_spec.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -292,15 +292,15 @@ def on_message(message)
292292
end
293293

294294
actor << :link
295-
queue << actor.ask!(:linked?)
295+
queue << actor.ask!(:linked)
296296
actor << nil
297297
queue << actor.ask(:add)
298298

299299
-> m { queue << m }
300300
end
301301

302302
expect(queue.pop).to eq :init
303-
expect(queue.pop).to eq true
303+
expect(queue.pop).to include(test)
304304
expect(queue.pop.value).to eq 1
305305
expect(queue.pop).to eq :resumed
306306
terminate_actors test
@@ -316,7 +316,7 @@ def on_message(message)
316316
-> m { m == :object_id ? self.object_id : pass }
317317
end
318318

319-
queue << actor.ask!(:linked?)
319+
queue << actor.ask!(:linked)
320320
queue << actor.ask!(:object_id)
321321
actor << nil
322322
queue << actor.ask(:object_id)
@@ -327,7 +327,7 @@ def on_message(message)
327327
end
328328

329329
expect(queue.pop).to eq :init
330-
expect(queue.pop).to eq true
330+
expect(queue.pop).to include(test)
331331
first_id = queue.pop
332332
second_id = queue.pop.value
333333
expect(first_id).not_to eq second_id # context already reset
@@ -354,7 +354,7 @@ def on_message(message)
354354
end
355355

356356
actor << :link
357-
queue << actor.ask!(:linked?)
357+
queue << actor.ask!(:linked)
358358
actor << nil
359359
queue << actor.ask(:add)
360360

@@ -364,7 +364,7 @@ def on_message(message)
364364
end
365365

366366
expect(queue.pop).to eq :init
367-
expect(queue.pop).to eq true
367+
expect(queue.pop).to include(test)
368368
expect(queue.pop.wait.reason).to be_a_kind_of(ActorTerminated)
369369
expect(queue.pop).to eq :init
370370
expect(queue.pop).to eq :restarted

0 commit comments

Comments
 (0)