11 #include "threads/Event.h" 19 #define CACHE_RC_ERROR -1 20 #define CACHE_RC_WOULD_BLOCK -2 21 #define CACHE_RC_TIMEOUT -3 29 virtual int Open() = 0;
30 virtual void Close() = 0;
32 virtual size_t GetMaxWriteSize(
const size_t& iRequestSize) = 0;
33 virtual int WriteToCache(
const char *pBuffer,
size_t iSize) = 0;
34 virtual int ReadFromCache(
char *pBuffer,
size_t iMaxSize) = 0;
35 virtual int64_t WaitForData(uint32_t iMinAvail, std::chrono::milliseconds timeout) = 0;
37 virtual int64_t Seek(int64_t iFilePosition) = 0;
45 virtual bool Reset(int64_t iSourcePosition) = 0;
47 virtual void EndOfInput();
48 virtual bool IsEndOfInput();
49 virtual void ClearEndOfInput();
51 virtual int64_t CachedDataEndPosIfSeekTo(int64_t iFilePosition) = 0;
52 virtual int64_t CachedDataStartPos() = 0;
53 virtual int64_t CachedDataEndPos() = 0;
54 virtual bool IsCachedPosition(int64_t iFilePosition) = 0;
60 bool m_bEndOfInput =
false;
71 void Close()
override;
73 size_t GetMaxWriteSize(
const size_t& iRequestSize)
override;
74 int WriteToCache(
const char *pBuffer,
size_t iSize)
override;
75 int ReadFromCache(
char *pBuffer,
size_t iMaxSize)
override;
76 int64_t WaitForData(uint32_t iMinAvail, std::chrono::milliseconds timeout)
override;
78 int64_t Seek(int64_t iFilePosition)
override;
79 bool Reset(int64_t iSourcePosition)
override;
80 void EndOfInput()
override;
82 int64_t CachedDataEndPosIfSeekTo(int64_t iFilePosition)
override;
83 int64_t CachedDataStartPos()
override;
84 int64_t CachedDataEndPos()
override;
85 bool IsCachedPosition(int64_t iFilePosition)
override;
89 int64_t GetAvailableRead();
92 std::string m_filename;
93 IFile* m_cacheFileRead;
94 IFile* m_cacheFileWrite;
96 volatile int64_t m_nStartPosition = 0;
97 volatile int64_t m_nWritePosition = 0;
98 volatile int64_t m_nReadPosition = 0;
107 void Close()
override;
109 size_t GetMaxWriteSize(
const size_t& iRequestSize)
override;
110 int WriteToCache(
const char *pBuffer,
size_t iSize)
override;
111 int ReadFromCache(
char *pBuffer,
size_t iMaxSize)
override;
112 int64_t WaitForData(uint32_t iMinAvail, std::chrono::milliseconds timeout)
override;
114 int64_t Seek(int64_t iFilePosition)
override;
115 bool Reset(int64_t iSourcePosition)
override;
116 void EndOfInput()
override;
117 bool IsEndOfInput()
override;
118 void ClearEndOfInput()
override;
120 int64_t CachedDataEndPosIfSeekTo(int64_t iFilePosition)
override;
121 int64_t CachedDataStartPos()
override;
122 int64_t CachedDataEndPos()
override;
123 bool IsCachedPosition(int64_t iFilePosition)
override;
This is an Event class built from a ConditionVariable.
Definition: Event.h:35
virtual bool Reset(int64_t iSourcePosition)=0
Reset cache position.
Definition: CacheStrategy.h:25
Definition: CacheStrategy.h:65
Definition: CacheStrategy.h:101