Class: Letterbox::Directory

Inherits:
Object
  • Object
show all
Defined in:
lib/letterbox/directory.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDirectory

Returns a new instance of Directory.



8
9
10
11
# File 'lib/letterbox/directory.rb', line 8

def initialize
  @registry        = Celluloid::Registry.new
  @number_of_units = Hash.new(0)
end

Instance Attribute Details

#number_of_unitsObject (readonly)

Returns the value of attribute number_of_units.



6
7
8
# File 'lib/letterbox/directory.rb', line 6

def number_of_units
  @number_of_units
end

#registryObject (readonly)

Returns the value of attribute registry.



6
7
8
# File 'lib/letterbox/directory.rb', line 6

def registry
  @registry
end

Instance Method Details

#completed_by(address) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'lib/letterbox/directory.rb', line 21

def completed_by(address)
  untrack_unit(address)

  if empty?(address)
    registry.get(address).terminate
    registry.delete(address)

    untrack_address(address)
  end
end

#number_outstandingObject



32
33
34
# File 'lib/letterbox/directory.rb', line 32

def number_outstanding
  number_of_units.values.reduce(:+)
end

#send_to(address, &new_address) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/letterbox/directory.rb', line 13

def send_to(address, &new_address)
  registry.set(address, new_address.call) unless registry.get(address)

  track_unit(address)

  registry.get(address)
end