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