29 #ifndef CPL_VSIL_PLUGIN_H_INCLUDED
30 #define CPL_VSIL_PLUGIN_H_INCLUDED
35 #include "cpl_vsi_virtual.h"
45 class VSIPluginHandle;
47 class VSIPluginFilesystemHandler :
public VSIFilesystemHandler
56 friend class VSIPluginHandle;
57 VSIPluginHandle* CreatePluginHandle(
void *cbData);
58 const char* GetCallbackFilename(
const char* pszFilename);
59 bool IsValidFilename(
const char *pszFilename);
62 int Seek(
void *pFile,
vsi_l_offset nOffset,
int nWhence );
63 size_t Read(
void *pFile,
void *pBuffer,
size_t nSize,
size_t nCount );
64 int ReadMultiRange(
void *pFile,
int nRanges,
void ** ppData,
const vsi_l_offset* panOffsets,
const size_t* panSizes );
66 int Eof(
void *pFile );
67 size_t Write(
void *pFile,
const void *pBuffer,
size_t nSize,
size_t nCount);
68 int Flush(
void *pFile );
70 int Close(
void *pFile );
73 VSIPluginFilesystemHandler(
const char *pszPrefix,
75 ~VSIPluginFilesystemHandler()
override;
78 const char *pszAccess,
82 int Stat (
const char *pszFilename,
VSIStatBufL *pStatBuf,
int nFlags )
override;
83 int Unlink (
const char * pszFilename )
override;
84 int Rename (
const char * oldpath,
const char * )
override;
85 int Mkdir (
const char * pszDirname,
long nMode )
override;
86 int Rmdir (
const char * pszDirname )
override;
87 char **ReadDir (
const char *pszDirname )
override
88 {
return ReadDirEx(pszDirname, 0); }
89 char **ReadDirEx(
const char * pszDirname,
int nMaxFiles )
override;
90 char **SiblingFiles(
const char * pszFilename )
override;
91 int HasOptimizedReadMultiRange(
const char* pszPath )
override;
104 VSIPluginFilesystemHandler* poFS;
109 VSIPluginHandle( VSIPluginFilesystemHandler* poFS,
void *cbData);
110 ~VSIPluginHandle()
override;
114 size_t Read(
void *pBuffer,
size_t nSize,
size_t nCount )
override;
115 int ReadMultiRange(
int nRanges,
void ** ppData,
const vsi_l_offset* panOffsets,
const size_t* panSizes )
override;
118 size_t Write(
const void *pBuffer,
size_t nSize,
size_t nCount)
override;
119 int Flush()
override;
121 int Close()
override;
Virtual file handle.
Definition: cpl_vsi_virtual.h:56
Core portability definitions for CPL.
#define CPL_DISALLOW_COPY_ASSIGN(ClassName)
Helper to remove the copy and assignment constructors so that the compiler will not generate the defa...
Definition: cpl_port.h:955
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1169
Various convenience functions for working with strings and string lists.
VSIRangeStatus
Range status.
Definition: cpl_vsi.h:177
struct VSI_STAT64_T VSIStatBufL
Type for VSIStatL()
Definition: cpl_vsi.h:195
GUIntBig vsi_l_offset
Type for a file offset.
Definition: cpl_vsi.h:140
struct containing callbacks to used by the handler.
Definition: cpl_vsi.h:539