29 #ifndef CPL_VSIL_PLUGIN_H_INCLUDED
30 #define CPL_VSIL_PLUGIN_H_INCLUDED
35 #include "cpl_vsi_virtual.h"
46 class VSIPluginHandle;
48 class VSIPluginFilesystemHandler :
public VSIFilesystemHandler
55 bool m_bWarnedAdviseReadImplemented =
false;
58 friend class VSIPluginHandle;
59 VSIPluginHandle *CreatePluginHandle(
void *cbData);
60 const char *GetCallbackFilename(
const char *pszFilename);
61 bool IsValidFilename(
const char *pszFilename);
64 int Seek(
void *pFile,
vsi_l_offset nOffset,
int nWhence);
65 size_t Read(
void *pFile,
void *pBuffer,
size_t nSize,
size_t nCount);
66 int ReadMultiRange(
void *pFile,
int nRanges,
void **ppData,
68 void AdviseRead(
void *pFile,
int nRanges,
const vsi_l_offset *panOffsets,
69 const size_t *panSizes);
73 size_t Write(
void *pFile,
const void *pBuffer,
size_t nSize,
size_t nCount);
74 int Flush(
void *pFile);
76 int Close(
void *pFile);
79 VSIPluginFilesystemHandler(
const char *pszPrefix,
81 ~VSIPluginFilesystemHandler()
override;
87 int Stat(
const char *pszFilename,
VSIStatBufL *pStatBuf,
89 int Unlink(
const char *pszFilename)
override;
90 int Rename(
const char *oldpath,
const char * )
override;
91 int Mkdir(
const char *pszDirname,
long nMode)
override;
92 int Rmdir(
const char *pszDirname)
override;
93 char **ReadDir(
const char *pszDirname)
override
95 return ReadDirEx(pszDirname, 0);
97 char **ReadDirEx(
const char *pszDirname,
int nMaxFiles)
override;
98 char **SiblingFiles(
const char *pszFilename)
override;
99 int HasOptimizedReadMultiRange(
const char *pszPath)
override;
111 VSIPluginFilesystemHandler *poFS;
115 VSIPluginHandle(VSIPluginFilesystemHandler *poFS,
void *cbData);
116 ~VSIPluginHandle()
override;
120 size_t Read(
void *pBuffer,
size_t nSize,
size_t nCount)
override;
121 int ReadMultiRange(
int nRanges,
void **ppData,
123 const size_t *panSizes)
override;
124 void AdviseRead(
int nRanges,
const vsi_l_offset *panOffsets,
125 const size_t *panSizes)
override;
129 size_t Write(
const void *pBuffer,
size_t nSize,
size_t nCount)
override;
130 int Flush()
override;
132 int Close()
override;
139 #endif // CPL_VSIL_PLUGIN_H_INCLUDED