Class: Actor::Messaging::Read

Inherits:
Object
  • Object
show all
Defined in:
lib/actor/messaging/read.rb,
lib/actor/messaging/read/dependency.rb,
lib/actor/messaging/read/substitute.rb

Direct Known Subclasses

Substitute

Defined Under Namespace

Modules: Dependency Classes: Substitute

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue) ⇒ Read

Returns a new instance of Read.



6
7
8
# File 'lib/actor/messaging/read.rb', line 6

def initialize(queue)
  @queue = queue
end

Instance Attribute Details

#queueObject (readonly)

Returns the value of attribute queue.



4
5
6
# File 'lib/actor/messaging/read.rb', line 4

def queue
  @queue
end

Class Method Details

.build(address) ⇒ Object



10
11
12
13
14
# File 'lib/actor/messaging/read.rb', line 10

def self.build(address)
  queue = address.queue

  new queue
end

.call(address, wait: nil) ⇒ Object



16
17
18
19
20
# File 'lib/actor/messaging/read.rb', line 16

def self.call(address, wait: nil)
  instance = build(address)

  instance.(wait: wait)
end

Instance Method Details

#address?(address) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/actor/messaging/read.rb', line 31

def address?(address)
  queue?(address.queue)
end

#call(wait: nil) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/actor/messaging/read.rb', line 22

def call(wait: nil)
  non_block = wait == false

  queue.deq(non_block)

rescue ThreadError
  return nil
end

#next_message?(message) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
38
39
40
41
42
43
# File 'lib/actor/messaging/read.rb', line 35

def next_message?(message)
  begin
    next_message = @queue.deq(true)
  rescue ThreadError
    return false
  end

  next_message == message
end

#queue?(queue) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/actor/messaging/read.rb', line 45

def queue?(queue)
  self.queue == queue
end