Sha256: c5c5fe4b3d32f8680b5b08ae390354c54f89d46cd7f09005cfe1b33eadfc7e58

Contents?: true

Size: 790 Bytes

Versions: 1

Compression:

Stored size: 790 Bytes

Contents

module Elaine
  class Vertex
    attr_reader :id
    attr_accessor :value, :messages

    def initialize(id, value, *outedges)
      @id = id
      @value = value
      @outedges = outedges
      @messages = []
      @active = true
      @superstep = 0
    end

    def edges
      block_given? ? @outedges.each {|e| yield e} : @outedges
    end

    def deliver_to_all_neighbors(msg)
      edges.each {|e| deliver(e, msg)}
    end

    def deliver(to, msg)
      PostOffice.instance.deliver(to, msg)
    end

    def step
      @superstep += 1
      compute
    end

    def halt;     @active = false;  end
    def active!;  @active = true;   end
    def active?;  @active;          end

    def superstep; @superstep; end
    def neighbors; @outedges; end

    def compute; end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
elaine-0.0.3 lib/elaine/vertex.rb