Module: Sinatra::RocketIO::Linda

Defined in:
lib/sinatra/rocketio/linda.rb,
lib/sinatra-rocketio-linda/linda.rb,
lib/sinatra-rocketio-linda/tuple.rb,
lib/sinatra-rocketio-linda/helper.rb,
lib/sinatra/rocketio/linda/client.rb,
lib/sinatra-rocketio-linda/options.rb,
lib/sinatra/rocketio/linda/version.rb,
lib/sinatra-rocketio-linda/javascript.rb,
lib/sinatra-rocketio-linda/tuplespace.rb,
lib/sinatra-rocketio-linda/application.rb

Defined Under Namespace

Modules: Helper Classes: Client, Tuple, TupleSpace

Constant Summary collapse

VERSION =
"0.1.4"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](name) ⇒ Object



9
10
11
# File 'lib/sinatra-rocketio-linda/linda.rb', line 9

def self.[](name)
  self.tuplespaces[name]
end

.callbacksObject



19
20
21
# File 'lib/sinatra-rocketio-linda/linda.rb', line 19

def self.callbacks
  @@callbacks ||= Hash.new{|h,k| h[k] = Array.new }
end

.check_expireObject



13
14
15
16
17
# File 'lib/sinatra-rocketio-linda/linda.rb', line 13

def self.check_expire
  tuplespaces.values.each do |ts|
    ts.check_expire
  end
end

.default_optionsObject



13
14
15
16
17
# File 'lib/sinatra-rocketio-linda/options.rb', line 13

def self.default_options
  {
    :expire_check => [60, lambda{|v| v.kind_of? Fixnum and v > 0 }]
  }
end

.javascript(*js_file_names) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/sinatra-rocketio-linda/javascript.rb', line 5

def self.javascript(*js_file_names)
  js_file_names = ['linda.js', 'rocketio.js']
  js = ''
  js_file_names.each do |i|
    js += case i
          when 'rocketio.js'
            Sinatra::RocketIO.javascript
          else
            j = ''
            File.open(File.expand_path "../js/#{i}", File.dirname(__FILE__)) do |f|
              j = f.read
            end
            j
          end + "\n"
  end
  js
end

.optionsObject



19
20
21
22
23
24
25
26
27
# File 'lib/sinatra-rocketio-linda/options.rb', line 19

def self.options
  @@options ||= (
                 opts = {}
                 default_options.each do |k,v|
                   opts[k] = v[0]
                 end
                 opts
                 )
end

.options=(opts) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/sinatra-rocketio-linda/options.rb', line 29

def self.options=(opts)
  @@options = {}
  opts.each do |k,v|
    k = k.to_sym
    unless default_options.include? k
      STDERR.puts "!! Sinatra::RocketIO::Linda setting - \"#{k}\" is not valid key"
    else
      unless default_options[k][1].call(v)
        default = default_options[k][0]
        STDERR.puts "!! Sinatra::RocketIO::Linda setting - \"#{k} => #{v}\" is not valid. set default \"#{k} => #{default}\""
        @@options[k] = default
      else
        @@options[k] = v
      end
    end
  end
  default_options.each do |k, v|
    @@options[k] = v[0] unless @@options.include? k
  end
  @@options
end

.registered(app) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/sinatra-rocketio-linda/application.rb', line 5

def self.registered(app)
  app.helpers Sinatra::RocketIO::Linda::Helper

  app.get '/rocketio/linda.js' do
    content_type 'application/javascript'
    @js ||= ERB.new(::Sinatra::RocketIO::Linda.javascript).result(binding)
  end
end

.tuplespacesObject



5
6
7
# File 'lib/sinatra-rocketio-linda/linda.rb', line 5

def self.tuplespaces
  @@spaces ||= Hash.new{|h,k| h[k] = TupleSpace.new(k) }
end

Instance Method Details

#lindaObject



9
10
11
# File 'lib/sinatra-rocketio-linda/options.rb', line 9

def linda
  Linda.options
end

#linda=(options) ⇒ Object



5
6
7
# File 'lib/sinatra-rocketio-linda/options.rb', line 5

def linda=(options)
  Linda.options = options
end