class Sinatra::RocketIO::Linda::Client::TupleSpace

Attributes

linda[R]
name[R]

Public Class Methods

new(name, linda) click to toggle source
# File lib/sinatra/rocketio/linda/client.rb, line 37
def initialize(name, linda)
  @name = name
  @linda = linda
end

Public Instance Methods

list(tuple, &block) click to toggle source
# File lib/sinatra/rocketio/linda/client.rb, line 88
def list(tuple, &block)
  unless [Hash, Array].include? tuple.class
    raise ArgumentError, "tuple must be Array or Hash"
  end
  callback_id = create_callback_id
  if block_given?
    @linda.io.once "__linda_list_callback_#{callback_id}" do |data|
      block.call data
    end
    @linda.io.push "__linda_list", [@name, tuple, callback_id]
  end
end
read(tuple, &block) click to toggle source
# File lib/sinatra/rocketio/linda/client.rb, line 49
def read(tuple, &block)
  unless [Hash, Array].include? tuple.class
    raise ArgumentError, "tuple must be Array or Hash"
  end
  callback_id = create_callback_id
  if block_given?
    @linda.io.once "__linda_read_callback_#{callback_id}" do |data|
      block.call(data['tuple'], TupleInfo.new(data['info']))
    end
  end
  @linda.io.push "__linda_read", [@name, tuple, callback_id]
end
take(tuple, &block) click to toggle source
# File lib/sinatra/rocketio/linda/client.rb, line 62
def take(tuple, &block)
  unless [Hash, Array].include? tuple.class
    raise ArgumentError, "tuple must be Array or Hash"
  end
  callback_id = create_callback_id
  if block_given?
    @linda.io.once "__linda_take_callback_#{callback_id}" do |data|
      block.call(data['tuple'], TupleInfo.new(data['info']))
    end
  end
  @linda.io.push "__linda_take", [@name, tuple, callback_id]
end
watch(tuple, &block) click to toggle source
# File lib/sinatra/rocketio/linda/client.rb, line 75
def watch(tuple, &block)
  unless [Hash, Array].include? tuple.class
    raise ArgumentError, "tuple must be Array or Hash"
  end
  callback_id = create_callback_id
  if block_given?
    @linda.io.on "__linda_watch_callback_#{callback_id}" do |data|
      block.call(data['tuple'], TupleInfo.new(data['info']))
    end
  end
  @linda.io.push "__linda_watch", [@name, tuple, callback_id]
end
write(tuple, opts={}) click to toggle source
# File lib/sinatra/rocketio/linda/client.rb, line 42
def write(tuple, opts={})
  unless [Hash, Array].include? tuple.class
    raise ArgumentError, "tuple must be Array or Hash"
  end
  @linda.io.push "__linda_write", [@name, tuple, opts]
end

Private Instance Methods

create_callback_id() click to toggle source
# File lib/sinatra/rocketio/linda/client.rb, line 102
def create_callback_id
  "#{Time.now.to_i}#{Time.now.usec}_#{(rand*1000000).to_i}"
end