diff options
Diffstat (limited to 'Ryujinx.Audio.Renderer/Server/Sink/SinkContext.cs')
-rw-r--r-- | Ryujinx.Audio.Renderer/Server/Sink/SinkContext.cs | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/Ryujinx.Audio.Renderer/Server/Sink/SinkContext.cs b/Ryujinx.Audio.Renderer/Server/Sink/SinkContext.cs new file mode 100644 index 00000000..136f7538 --- /dev/null +++ b/Ryujinx.Audio.Renderer/Server/Sink/SinkContext.cs @@ -0,0 +1,73 @@ +// +// Copyright (c) 2019-2020 Ryujinx +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. +// + +using System.Diagnostics; + +namespace Ryujinx.Audio.Renderer.Server.Sink +{ + /// <summary> + /// Sink context. + /// </summary> + public class SinkContext + { + /// <summary> + /// Storage for <see cref="BaseSink"/>. + /// </summary> + private BaseSink[] _sinks; + + /// <summary> + /// The total sink count. + /// </summary> + private uint _sinkCount; + + /// <summary> + /// Initialize the <see cref="SinkContext"/>. + /// </summary> + /// <param name="sinksCount">The total sink count.</param> + public void Initialize(uint sinksCount) + { + _sinkCount = sinksCount; + _sinks = new BaseSink[_sinkCount]; + + for (int i = 0; i < _sinkCount; i++) + { + _sinks[i] = new BaseSink(); + } + } + + /// <summary> + /// Get the total sink count. + /// </summary> + /// <returns>The total sink count.</returns> + public uint GetCount() + { + return _sinkCount; + } + + /// <summary> + /// Get a reference to a <see cref="BaseSink"/> at the given <paramref name="id"/>. + /// </summary> + /// <param name="id">The index to use.</param> + /// <returns>A reference to a <see cref="BaseSink"/> at the given <paramref name="id"/>.</returns> + public ref BaseSink GetSink(int id) + { + Debug.Assert(id >= 0 && id < _sinkCount); + + return ref _sinks[id]; + } + } +} |