Sha256: 7bb10435c1ffe3566ea8a632d34a365743448737f96bc5d43c90c220735e71e2
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
require 'eventmachine' require 'em-synchrony' $: << './lib' require 'em_additions' require 'radiodan/logging' require 'radiodan/builder' require 'radiodan/version' class Radiodan include Logging def initialize(&blk) @builder = Builder.new(&blk) end def start # keep player running on schedule raise "no player set" unless player.adapter? EM.synchrony do trap_signals! EM.next_tick do @builder.call_middleware! end EM.now_and_every(seconds: 1) do logger.info "SYNC!" player.sync if player end end end def player @builder.player end def respond_to?(method) if player.respond_to? method true else super end end private def method_missing(method, *args, &block) if player.respond_to? method player.send method, *args, &block else super end end def trap_signals! %w{INT TERM SIGHUP SIGINT SIGTERM}.each do |signal| Signal.trap(signal) do logger.info "Trapped #{signal}" EM::Synchrony.next_tick do begin stop ensure EM.stop end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
radiodan-0.0.1 | lib/radiodan.rb |