class Airplay::Group::Players

Attributes

players[R]

Public Class Methods

new(players) click to toggle source
# File lib/airplay/group/players.rb, line 6
def initialize(players)
  @players = players
end

Public Instance Methods

progress(callback) click to toggle source
# File lib/airplay/group/players.rb, line 10
def progress(callback)
  players.each do |player|
    player.progress -> info {
      callback.call(player.device, info) if player.playing?
    }
  end
end
wait() click to toggle source
# File lib/airplay/group/players.rb, line 18
def wait
  sleep 0.1 while still_playing?
  players.map(&:cleanup)
end

Private Instance Methods

still_playing?() click to toggle source
# File lib/airplay/group/players.rb, line 25
def still_playing?
  states = players.map { |player| !player.played? || player.stopped? }
  states.uniq == [true]
end