File: streaming.rb

package info (click to toggle)
mikutter 3.5.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 10,256 kB
  • ctags: 2,165
  • sloc: ruby: 19,079; sh: 205; makefile: 20
file content (36 lines) | stat: -rw-r--r-- 1,147 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# -*- coding: utf-8 -*-
require File.join(__dir__, 'perma_streamer')
require File.join(__dir__, 'filter')

Plugin.create :streaming do
  streamers = {}                # service_id => PermaStreamer
  Delayer.new {
    Service.instances.each{ |service|
      if UserConfig[:realtime_rewind]
        streamers[service.name] ||= Plugin::Streaming::PermaStreamer.new(service) end } }

  rewind_switch_change_hook = UserConfig.connect(:realtime_rewind){ |key, new_val, before_val, id|
    if new_val
      streamers.values.each(&:kill)
      streamers = {}
      Service.instances.each{ |service|
        streamers[service.name] ||= Plugin::Streaming::PermaStreamer.new(service) }
    else
      streamers.values.each(&:kill)
      streamers = {}
    end
  }

  on_service_registered do |service|
    if UserConfig[:realtime_rewind]
      streamers[service.name] ||= Plugin::Streaming::PermaStreamer.new(service) end end

  on_service_destroyed do |service|
    streamers[service.name] and streamers[service.name].kill end

  onunload do
    UserConfig.disconnect(rewind_switch_change_hook)
    streamers.values.each(&:kill)
    streamers = {} end

end