xbmc
OverrideFile.h
1 /*
2  * Copyright (C) 2014-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 "filesystem/File.h"
12 #include "filesystem/IFile.h"
13 
14 namespace XFILE
15 {
16 class COverrideFile : public IFile
17 {
18 public:
19  explicit COverrideFile(bool writable);
20  ~COverrideFile() override;
21 
22  bool Open(const CURL& url) override;
23  bool Exists(const CURL& url) override;
24  int Stat(const CURL& url, struct __stat64* buffer) override;
25  int Stat(struct __stat64* buffer) override;
26  bool OpenForWrite(const CURL& url, bool bOverWrite = false) override;
27  bool Delete(const CURL& url) override;
28  bool Rename(const CURL& url, const CURL& urlnew) override;
29 
30  ssize_t Read(void* lpBuf, size_t uiBufSize) override;
31  ssize_t Write(const void* lpBuf, size_t uiBufSize) override;
32  int64_t Seek(int64_t iFilePosition, int iWhence = SEEK_SET) override;
33  void Close() override;
34  int64_t GetPosition() override;
35  int64_t GetLength() override;
36 
37 protected:
38  virtual std::string TranslatePath(const CURL &url) = 0;
39 
40  CFile m_file;
41  bool m_writable;
42 };
43 }
Definition: Scraper.h:41
ssize_t Write(const void *lpBuf, size_t uiBufSize) override
Attempt to write bufSize bytes from buffer bufPtr into currently opened file.
Definition: OverrideFile.cpp:90
Definition: URL.h:20
Definition: File.h:37
Definition: IFile.h:42
ssize_t Read(void *lpBuf, size_t uiBufSize) override
Attempt to read bufSize bytes from currently opened file into buffer bufPtr.
Definition: OverrideFile.cpp:85
Definition: OverrideFile.h:16
int Stat(const CURL &url, struct __stat64 *buffer) override
Fills struct __stat64 with information about file specified by url.
Definition: OverrideFile.cpp:62