Sha256: 8b29eb72f07e8881392b10f76f9e0ce682549a08d9216e8b2ed2a1fac670b865

Contents?: true

Size: 991 Bytes

Versions: 3

Compression:

Stored size: 991 Bytes

Contents

module Subduino
  class ArdPS

    def self.redis
      @redis ||= Redis.new(:timeout => 0) rescue false
    end

    def self.read
      return Log.warn "[PubSub] Not started..." unless @redis
      Thread.new do
        begin
          redis.subscribe('subduin') 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

    def self.write(msg)
      redis.publish('subdout', msg)
    end

    def self.stop!
      redis.disconnect if @redis
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
subduino-0.2.1 lib/subduino/ard_ps.rb
subduino-0.2.0 lib/subduino/ard_ps.rb
subduino-0.1.0 lib/subduino/ard_ps.rb