kodi
|
Public Member Functions | |
CCircularCache (size_t front, size_t back) | |
int | Open () override |
void | Close () override |
size_t | GetMaxWriteSize (const size_t &iRequestSize) override |
int | WriteToCache (const char *buf, size_t len) override |
Function will write to m_buf at m_end % m_size location it will write at maximum m_size, but it will only write as much it can without wrapping around in the buffer. More... | |
int | ReadFromCache (char *buf, size_t len) override |
Reads data from cache. More... | |
int64_t | WaitForData (uint32_t minimum, std::chrono::milliseconds timeout) override |
int64_t | Seek (int64_t pos) override |
bool | Reset (int64_t pos) override |
Reset cache position. More... | |
int64_t | CachedDataEndPosIfSeekTo (int64_t iFilePosition) override |
int64_t | CachedDataStartPos () override |
int64_t | CachedDataEndPos () override |
bool | IsCachedPosition (int64_t iFilePosition) override |
CCacheStrategy * | CreateNew () override |
![]() | |
virtual void | EndOfInput () |
virtual bool | IsEndOfInput () |
virtual void | ClearEndOfInput () |
Protected Attributes | |
int64_t | m_beg = 0 |
index in file (not buffer) of beginning of valid data | |
int64_t | m_end = 0 |
index in file (not buffer) of end of valid data | |
int64_t | m_cur = 0 |
current reading index in file | |
uint8_t * | m_buf |
buffer holding data | |
size_t | m_size |
size of data buffer used (m_buf) | |
size_t | m_size_back |
guaranteed size of back buffer (actual size can be smaller, or larger if front buffer doesn't need it) | |
CCriticalSection | m_sync |
CEvent | m_written |
![]() | |
bool | m_bEndOfInput = false |
Additional Inherited Members | |
![]() | |
CEvent | m_space |
|
overridevirtual |
Reads data from cache.
Will only read up till the buffer wrap point. So multiple calls may be needed to empty the whole cache
Implements XFILE::CCacheStrategy.
|
overridevirtual |
Reset cache position.
iSourcePosition | position to reset to |
Implements XFILE::CCacheStrategy.
|
overridevirtual |
Function will write to m_buf at m_end % m_size location it will write at maximum m_size, but it will only write as much it can without wrapping around in the buffer.
It will always leave m_size_back of the backbuffer intact but if the back buffer is less than that, that space is usable to write.
If back buffer is filled to an larger extent than m_size_back, it will allow it to be overwritten until only m_size_back data remains.
The following always apply:
Multiple calls may be needed to fill buffer completely.
Implements XFILE::CCacheStrategy.