class Pione::TupleSpace::TupleSpaceServer
Attributes
Public Class Methods
# 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
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
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
# 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
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
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
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
# File lib/pione/tuple-space/tuple-space-server.rb, line 140 def data_size @__ts__.data_size end
# File lib/pione/tuple-space/tuple-space-server.rb, line 136 def finished_size @__ts__.finished_size end
# File lib/pione/tuple-space/tuple-space-server.rb, line 202 def inspect "#<Pione::TupleSpace::TupleSpaceServer:%s>" % object_id end
# File lib/pione/tuple-space/tuple-space-server.rb, line 96 def now Time.now end
Return pid
# File lib/pione/tuple-space/tuple-space-server.rb, line 92 def pid Process.pid end
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.
@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 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 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
# File lib/pione/tuple-space/tuple-space-server.rb, line 128 def task_size @__ts__.task_size end
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
Shutdown the server.
# File lib/pione/tuple-space/tuple-space-server.rb, line 145 def terminate @terminated = true end
# File lib/pione/tuple-space/tuple-space-server.rb, line 132 def working_size @__ts__.working_size end