module Pione::TupleSpace::TupleSpaceInterface

Public Class Methods

tuple_space_operation(name) click to toggle source

Define tuple space operation.

# File lib/pione/tuple-space/tuple-space-interface.rb, line 6
def self.tuple_space_operation(name)
  define_method(name) do |*args, &b|
    @__tuple_space__.__send__(name, *args, &b)
  end
end

Public Instance Methods

process_log(record) click to toggle source

Put a log tuple with the data as a process record into tuple space. The record’s value of transition is “complete” by default and the timestamp set automatically.

@param record [Log::ProcessRecord]

process log record

@return [void]

# File lib/pione/tuple-space/tuple-space-interface.rb, line 36
def process_log(record)
  record = record.merge(transition: "complete") unless record.transition
  write(TupleSpace::ProcessLogTuple.new(record))
end
processing_error(msg) click to toggle source

Send a processing error.

@param msg [String]

error message

@return [void]

# File lib/pione/tuple-space/tuple-space-interface.rb, line 62
def processing_error(msg)
  write(TupleSpace::CommandTuple.new(name: "terminate", args: {message: msg}))
end
set_tuple_space(server) click to toggle source

Set tuple space server which provides operations. @return [void]

# File lib/pione/tuple-space/tuple-space-interface.rb, line 68
def set_tuple_space(server)
  @__tuple_space__ = server

  # override #to_s as it's uri because dead remote objects cause exceptions
  # when you try to watch the object
  if server.methods.include?(:__drburi)
    def @__tuple_space__.to_s
      __drburi
    end
  end
end
tuple_space_server() click to toggle source

Return the tuple space server.

# File lib/pione/tuple-space/tuple-space-interface.rb, line 25
def tuple_space_server
  @__tuple_space__
end
with_process_log(record) { || ... } click to toggle source

Do the action with loggging.

@param record [Log::ProcessRecord]

process log record

@yield

the action

@return [void]

# File lib/pione/tuple-space/tuple-space-interface.rb, line 48
def with_process_log(record)
  process_log(record.merge(transition: "start"))
  result = yield
  process_log(record.merge(transition: "complete"))
  return result
rescue DRb::DRbConnError
  yield
end