Sha256: 62f890910fd0ed7afb892b252e11d479eda644886a9d975ac18528ff252ca9ee

Contents?: true

Size: 477 Bytes

Versions: 1

Compression:

Stored size: 477 Bytes

Contents

require 'elaine/vertex'
require 'elaine/worker'
require 'elaine/coordinator'

require 'singleton'

class PostOffice
  include Singleton

  def initialize
    @mailboxes = Hash.new
    @mutex = Mutex.new
  end

  def deliver(to, msg)
    @mutex.synchronize do
      if @mailboxes[to]
        @mailboxes[to].push msg
      else
        @mailboxes[to] = [msg]
      end
    end
  end

  def read(box)
    @mutex.synchronize do
      @mailboxes.delete(box) || []
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
elaine-0.0.3 lib/elaine.rb