Etterna 0.74.4
Loading...
Searching...
No Matches
RageFileDriverReadAhead.h
1/* RageFileDriverReadAhead - Read-ahead hinting for seamless rewinding. */
2
3#ifndef RAGE_FILE_DRIVER_READ_AHEAD_H
4#define RAGE_FILE_DRIVER_READ_AHEAD_H
5
6#include "RageFileBasic.h"
7
9{
10 public:
11 /* This filter can only be used on supported files; test before using. */
12 static bool FileSupported(RageFileBasic* pFile);
13
14 /* pFile will be freed if DeleteFileWhenFinished is called. */
16 int iCacheBytes,
17 int iPostBufferReadAhead = -1);
19 ~RageFileDriverReadAhead() override;
20 RageFileDriverReadAhead* Copy() const override;
21
22 void DeleteFileWhenFinished() { m_bFileOwned = true; }
23
24 std::string GetError() const override { return m_pFile->GetError(); }
25 void ClearError() override { return m_pFile->ClearError(); }
26
27 int ReadInternal(void* pBuffer, size_t iBytes) override;
28 int WriteInternal(const void* pBuffer, size_t iBytes) override
29 {
30 return m_pFile->Write(pBuffer, iBytes);
31 }
32 int SeekInternal(int iOffset) override;
33 int GetFileSize() const override { return m_pFile->GetFileSize(); }
34 int GetFD() override { return m_pFile->GetFD(); }
35 int Tell() const override { return m_iFilePos; }
36
37 private:
38 void FillBuffer(int iBytes);
39
40 RageFileBasic* m_pFile;
41 int m_iFilePos;
42 bool m_bFileOwned;
43 std::string m_sBuffer;
44 int m_iPostBufferReadAhead;
45 bool m_bReadAheadNeeded = false;
46};
47
48#endif
Definition RageFileBasic.h:10
Definition RageFileDriverReadAhead.h:9
Definition RageFileBasic.h:66