summaryrefslogtreecommitdiffstats
path: root/xbmc/utils/RingBuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/utils/RingBuffer.h')
-rw-r--r--xbmc/utils/RingBuffer.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/xbmc/utils/RingBuffer.h b/xbmc/utils/RingBuffer.h
new file mode 100644
index 0000000..8cdb971
--- /dev/null
+++ b/xbmc/utils/RingBuffer.h
@@ -0,0 +1,40 @@
1/*
2 * Copyright (C) 2010-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#include "threads/CriticalSection.h"
12
13class CRingBuffer
14{
15 CCriticalSection m_critSection;
16 char *m_buffer;
17 unsigned int m_size;
18 unsigned int m_readPtr;
19 unsigned int m_writePtr;
20 unsigned int m_fillCount;
21public:
22 CRingBuffer();
23 ~CRingBuffer();
24 bool Create(unsigned int size);
25 void Destroy();
26 void Clear();
27 bool ReadData(char *buf, unsigned int size);
28 bool ReadData(CRingBuffer &rBuf, unsigned int size);
29 bool WriteData(const char *buf, unsigned int size);
30 bool WriteData(CRingBuffer &rBuf, unsigned int size);
31 bool SkipBytes(int skipSize);
32 bool Append(CRingBuffer &rBuf);
33 bool Copy(CRingBuffer &rBuf);
34 char *getBuffer();
35 unsigned int getSize();
36 unsigned int getReadPtr() const;
37 unsigned int getWritePtr();
38 unsigned int getMaxReadSize();
39 unsigned int getMaxWriteSize();
40};