class Pione::TupleSpace::TupleSpaceServer

Attributes

tuple_space[R]

Public Class Methods

new(data={}, use_proxy=true) click to toggle source
# File lib/pione/tuple-space/tuple-space-server.rb, line 56
def initialize(data={}, use_proxy=true)
  @__ts__ = Rinda::TupleSpace.new
  @tuple_space = @__ts__
  if use_proxy
    @ts = Rinda::TupleSpaceProxy.new(@__ts__)
  else
    @ts = @__ts__
  end
  def @ts.to_s;"#<Rinda::TupleSpace>" end

  # check task worker resource
  resource = data[:task_worker_resource] || 1
  write(TupleSpace::TaskWorkerResourceTuple.new(number: resource))

  @terminated = false
end

Public Instance Methods

alive?() click to toggle source

def drburi

@remote_object ||= DRb.start_service(nil, self)
@remote_object.__drburi

end

# File lib/pione/tuple-space/tuple-space-server.rb, line 87
def alive?
  not(@terminated)
end
all_tuples(*args) click to toggle source

Return all tuples of the tuple space.

# File lib/pione/tuple-space/tuple-space-server.rb, line 124
def all_tuples(*args)
  @__ts__.all_tuples(*args).compact
end
attribute(name) click to toggle source
# File lib/pione/tuple-space/tuple-space-server.rb, line 194
def attribute(name)
  if tuple = read!(TupleSpace::AttributeTuple.new(key: name))
    return tuple.value
  else
    return nil
  end
end
base_location() click to toggle source

Return common base location of the space.

@return [BasicLocation]

base location
# File lib/pione/tuple-space/tuple-space-server.rb, line 104
def base_location
  read(TupleSpace::BaseLocationTuple.any).location
end
count_tuple(tuple) click to toggle source

Return the number of tuples matched with specified tuple.

# File lib/pione/tuple-space/tuple-space-server.rb, line 114
def count_tuple(tuple)
  read_all(tuple).size
end
current_task_worker_size() click to toggle source

Return the current worker size of the server.

# File lib/pione/tuple-space/tuple-space-server.rb, line 119
def current_task_worker_size
  read_all(TupleSpace::AgentTuple.new(agent_type: :task_worker)).size
end
data_size() click to toggle source
# File lib/pione/tuple-space/tuple-space-server.rb, line 140
def data_size
  @__ts__.data_size
end
finished_size() click to toggle source
# File lib/pione/tuple-space/tuple-space-server.rb, line 136
def finished_size
  @__ts__.finished_size
end
inspect() click to toggle source
# File lib/pione/tuple-space/tuple-space-server.rb, line 202
def inspect
  "#<Pione::TupleSpace::TupleSpaceServer:%s>" % object_id
end
now() click to toggle source
# File lib/pione/tuple-space/tuple-space-server.rb, line 96
def now
  Time.now
end
pid() click to toggle source

Return pid

# File lib/pione/tuple-space/tuple-space-server.rb, line 92
def pid
  Process.pid
end
read!(tuple) click to toggle source

Read a tuple with no waiting time. If there are no matched tuples, return ‘nil`.

@param tuple [BasicTuple]

template tuple for query

@return [BasicTuple, nil]

query result
# File lib/pione/tuple-space/tuple-space-server.rb, line 156
def read!(tuple)
  begin
    read(tuple, 0)
  rescue Rinda::RequestExpiredError
    nil
  end
end
set_base_location(location) click to toggle source

Set base location.

@param location [BasicLocation]

base location

@return [void]

# File lib/pione/tuple-space/tuple-space-server.rb, line 78
def set_base_location(location)
  write(TupleSpace::BaseLocationTuple.new(location.as_directory))
end
take!(tuple) click to toggle source

Take a tuple with no waiting time. If there are no matched tuples, return ‘nil`.

@param tuple [BasicTuple]

template tuple for query

@return [BasicTuple, nil]

query result
# File lib/pione/tuple-space/tuple-space-server.rb, line 171
def take!(tuple)
  begin
    take(tuple, 0)
  rescue Rinda::RequestExpiredError
    nil
  end
end
take_all!(tuple) click to toggle source

Take all tuples with no waiting time. If there are no matched tuples, return empty array.

@param tuple [BasicTuple]

template tuple for query

@return [Array<BasicTuple>]

query result
# File lib/pione/tuple-space/tuple-space-server.rb, line 186
def take_all!(tuple)
  begin
    take_all(tuple, 0)
  rescue Rinda::RequestExpiredError
    []
  end
end
task_size() click to toggle source
# File lib/pione/tuple-space/tuple-space-server.rb, line 128
def task_size
  @__ts__.task_size
end
task_worker_resource() click to toggle source

Return the worker resource size of the server.

# File lib/pione/tuple-space/tuple-space-server.rb, line 109
def task_worker_resource
  read(TupleSpace::TaskWorkerResourceTuple.any).number
end
terminate() click to toggle source

Shutdown the server.

# File lib/pione/tuple-space/tuple-space-server.rb, line 145
def terminate
  @terminated = true
end
working_size() click to toggle source
# File lib/pione/tuple-space/tuple-space-server.rb, line 132
def working_size
  @__ts__.working_size
end