Class Rinda::TupleEntry
In: rinda/tuplespace.rb
Parent: Object

A TupleEntry is a Tuple (i.e. a possible entry in some Tuplespace) together with expiry and cancellation data.

Methods

[]   alive?   cancel   canceled?   expired?   fetch   make_expires   make_tuple   new   renew   size   value  

Included Modules

DRbUndumped

Attributes

expires  [RW] 

Public Class methods

Creates a TupleEntry based on ary with an optional renewer or expiry time sec.

A renewer must implement the renew method which returns a Numeric, nil, or true to indicate when the tuple has expired.

[Source]

# File rinda/tuplespace.rb, line 25
    def initialize(ary, sec=nil)
      @cancel = false
      @expires = nil
      @tuple = make_tuple(ary)
      @renewer = nil
      renew(sec)
    end

Public Instance methods

Retrieves key from the tuple.

[Source]

# File rinda/tuplespace.rb, line 109
    def [](key)
      @tuple[key]
    end

A TupleEntry is dead when it is canceled or expired.

[Source]

# File rinda/tuplespace.rb, line 43
    def alive?
      !canceled? && !expired?
    end

Marks this TupleEntry as canceled.

[Source]

# File rinda/tuplespace.rb, line 36
    def cancel
      @cancel = true
    end

Returns the canceled status.

[Source]

# File rinda/tuplespace.rb, line 56
    def canceled?; @cancel; end

Has this tuple expired? (true/false).

A tuple has expired when its expiry timer based on the sec argument to initialize runs out.

[Source]

# File rinda/tuplespace.rb, line 64
    def expired?
      return true unless @expires
      return false if @expires > Time.now
      return true if @renewer.nil?
      renew(@renewer)
      return true unless @expires
      return @expires < Time.now
    end

Fetches key from the tuple.

[Source]

# File rinda/tuplespace.rb, line 116
    def fetch(key)
      @tuple.fetch(key)
    end

Returns an expiry Time based on sec which can be one of:

Numeric:sec seconds into the future
true:the expiry time is the start of 1970 (i.e. expired)
nil:it is Tue Jan 19 03:14:07 GMT Standard Time 2038 (i.e. when UNIX clocks will die)

[Source]

# File rinda/tuplespace.rb, line 95
    def make_expires(sec=nil)
      case sec
      when Numeric
        Time.now + sec
      when true
        Time.at(1)
      when nil
        Time.at(2**31-1)
      end
    end

Creates a Rinda::Tuple for ary.

[Source]

# File rinda/tuplespace.rb, line 130
    def make_tuple(ary)
      Rinda::Tuple.new(ary)
    end

Reset the expiry time according to sec_or_renewer.

nil:it is set to expire in the far future.
false:it has expired.
Numeric:it will expire in that many seconds.

Otherwise the argument refers to some kind of renewer object which will reset its expiry time.

[Source]

# File rinda/tuplespace.rb, line 83
    def renew(sec_or_renewer)
      sec, @renewer = get_renewer(sec_or_renewer)
      @expires = make_expires(sec)
    end

The size of the tuple.

[Source]

# File rinda/tuplespace.rb, line 123
    def size
      @tuple.size
    end

Return the object which makes up the tuple itself: the Array or Hash.

[Source]

# File rinda/tuplespace.rb, line 51
    def value; @tuple.value; end

[Validate]