MPD: MusicBuffer.hxx Source File

MPD 0.20.15

MusicBuffer.hxx
Go to the documentation of this file.
1 /*
2 * Copyright 2003-2017 The Music Player Daemon Project
3 * http://www.musicpd.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20 #ifndef MPD_MUSIC_BUFFER_HXX
21 #define MPD_MUSIC_BUFFER_HXX
22
23 #include "util/SliceBuffer.hxx"
24 #include "thread/Mutex.hxx"
25
26 struct MusicChunk;
27
31 class MusicBuffer {
33 Mutex mutex;
34
35 SliceBuffer<MusicChunk> buffer;
36
37 public:
44 MusicBuffer(unsigned num_chunks) noexcept;
45
46 #ifndef NDEBUG
47
52 bool IsEmptyUnsafe() const {
53 return buffer.IsEmpty();
54 }
55 #endif
56
62 gcc_pure
63 unsigned GetSize() const noexcept {
64 return buffer.GetCapacity();
65 }
66
74 MusicChunk *Allocate() noexcept;
75
80 void Return(MusicChunk *chunk) noexcept;
81 };
82
83 #endif
MusicBuffer::GetSize
gcc_pure unsigned GetSize() const noexcept
Returns the total number of reserved chunks in this buffer.
Definition: MusicBuffer.hxx:63
Mutex
Definition: Mutex.hxx:43
SliceBuffer::IsEmpty
bool IsEmpty() const
Definition: SliceBuffer.hxx:95
MusicBuffer::Return
void Return(MusicChunk *chunk) noexcept
Returns a chunk to the buffer.
MusicBuffer
An allocator for MusicChunk objects.
Definition: MusicBuffer.hxx:31
MusicBuffer::Allocate
MusicChunk * Allocate() noexcept
Allocates a chunk from the buffer.
MusicChunk
A chunk of music data.
Definition: MusicChunk.hxx:43
SliceBuffer::GetCapacity
unsigned GetCapacity() const
Definition: SliceBuffer.hxx:91
MusicBuffer::IsEmptyUnsafe
bool IsEmptyUnsafe() const
Check whether the buffer is empty.
Definition: MusicBuffer.hxx:52
Mutex.hxx
SliceBuffer.hxx
SliceBuffer< MusicChunk >
gcc_pure
#define gcc_pure
Definition: Compiler.h:116
MusicBuffer::MusicBuffer
MusicBuffer(unsigned num_chunks) noexcept
Creates a new MusicBuffer object.