php-pulseaudio/src/Sink/SinkList.php

78 lines
1.4 KiB
PHP

<?php
namespace NoccyLabs\PulseAudio\Sink;
use NoccyLabs\PulseAudio\PulseAudio;
use NoccyLabs\PulseAudio\Helper\Pacmd;
use ArrayAccess;
use IteratorAggregate;
use ArrayIterator;
use Countable;
class SinkList implements ArrayAccess, IteratorAggregate, Countable
{
protected $sinks = [];
protected $pulse;
public function __construct(PulseAudio $pulse)
{
$this->pulse = $pulse;
$sinks = Pacmd::query("list-sinks");
foreach ($sinks as $index=>$sink) {
$this->sinks[] = new Sink($pulse, $index, $sink);
}
}
public function createNullSink($name)
{
}
public function destroyNullSink(Sink $sink)
{
}
public function createRecorder($name)
{
}
public function destroySink($id)
{
}
public function getIterator()
{
return new ArrayIterator($this->sinks);
}
public function offsetGet($key)
{
if (!array_key_exist($key, $this->sinks)) {
throw new InvalidArgumentException("No such sink: {$key}");
}
return $this->sinks[$key];
}
public function offsetSet($key, $value)
{}
public function offsetUnset($key)
{}
public function offsetExists($key)
{
return array_key_exists($key, $this->sinks);
}
public function count()
{
return count($this->sinks);
}
}