module Pione::Global

Global is a table of global variables in PIONE system. It defines variable names, initial values, and configuration conditions. You can set and get value by calling item named method.

Attributes

__dependencies__[R]
item[R]

Public Class Methods

define_computed_item(name, dependencies, &definition) click to toggle source

Define a computed item. The item cannote be configured by user.

# File lib/pione/global/item.rb, line 32
def define_computed_item(name, dependencies, &definition)
  Item.new(name, false, :dependencies => dependencies).tap do |item|
    definition.call(item) if block_given?
    item.register
  end
end
define_external_item(name, initial_value=nil, &definition) click to toggle source

Define an external item. The item can be configured by user.

# File lib/pione/global/item.rb, line 24
def define_external_item(name, initial_value=nil, &definition)
  Item.new(name, true).tap do |item|
    definition.call(item) if block_given?
    item.register
  end
end
define_internal_item(name, initial_value=nil, &definition) click to toggle source

Define an internal item. The item cannot be configured by user.

# File lib/pione/global/item.rb, line 16
def define_internal_item(name, initial_value=nil, &definition)
  Item.new(name, false).tap do |item|
    definition.call(item) if block_given?
    item.register
  end
end
get(name) click to toggle source

Get value of the variable.

# File lib/pione/global/item.rb, line 40
def get(name)
  raise UnknownItem.new(name) unless @item.has_key?(name)

  # get current value
  val = @item[name].value

  if val.nil?
    # call updater
    @item[name].update(@item[name].init)

    # get value
    return @item[name].value
  else
    return val
  end
end
set(name, val) click to toggle source

Set value of the variable.

# File lib/pione/global/item.rb, line 58
def set(name, val)
  # set value
  @item[name].update(val)

  # update depended items
  @__dependencies__[name].each do |dependency|
    @item[dependency.name].update(nil)
  end
end