Sha256: 95c8c98c7267e2e26a5bcd1c408809abace85e296338cf6bcccf1eaf845aeed0
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
module Subduino class ArdPS class << self # # Redis PubSub # # Direct access to the Redis instance. # def redis @redis ||= Redis.new(:timeout => 0) rescue false end # # Read PubSub # # Join 'subduino' channel and send messages to I/O # def read return Log.warn "[PubSub] Not started..." unless redis Thread.new do begin redis.subscribe('subduino') do |on| on.subscribe {|klass, num_subs| Log.info "[PubSub] Subscribed to #{klass} (#{num_subs} subscriptions)" } on.message do |klass, msg| Log.info "[PubSub] #{klass} - #{msg}" ArdIO.write msg # @redis.unsubscribe if msg == 'exit' end on.unsubscribe {|klass, num_subs| Log.info "[PubSub] Unsubscribed to #{klass} (#{num_subs} subscriptions)" } end rescue => e Log.error "[PubSub] Error #{e}" Log.error e.backtrace.join("\n") end end end # # Write PubSub # # Write a message to the 'subduino' PubSub channel. # def write(msg) redis.publish('subduino', msg) end # # Fatality # def stop! redis.disconnect if redis end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
subduino-0.2.2 | lib/subduino/ard_ps.rb |