Sha256: 6b41778c2967ff790ea147b89fb661e562537856ff30a47eda5b96ccf9445de3

Contents?: true

Size: 790 Bytes

Versions: 1

Compression:

Stored size: 790 Bytes

Contents

module Pregel
  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
pregel-0.0.1 lib/pregel/vertex.rb