13#ifndef CPL_VSIL_PLUGIN_H_INCLUDED
14#define CPL_VSIL_PLUGIN_H_INCLUDED
19#include "cpl_vsi_virtual.h"
32class VSIPluginFilesystemHandler :
public VSIFilesystemHandler
39 bool m_bWarnedAdviseReadImplemented =
false;
42 friend class VSIPluginHandle;
43 VSIPluginHandle *CreatePluginHandle(
void *cbData);
44 const char *GetCallbackFilename(
const char *pszFilename);
45 bool IsValidFilename(
const char *pszFilename);
48 int Seek(
void *pFile,
vsi_l_offset nOffset,
int nWhence);
49 size_t Read(
void *pFile,
void *pBuffer,
size_t nSize,
size_t nCount);
50 int ReadMultiRange(
void *pFile,
int nRanges,
void **ppData,
52 void AdviseRead(
void *pFile,
int nRanges,
const vsi_l_offset *panOffsets,
53 const size_t *panSizes);
57 int Error(
void *pFile);
58 void ClearErr(
void *pFile);
59 size_t Write(
void *pFile,
const void *pBuffer,
size_t nSize,
size_t nCount);
60 int Flush(
void *pFile);
62 int Close(
void *pFile);
65 VSIPluginFilesystemHandler(
const char *pszPrefix,
67 ~VSIPluginFilesystemHandler()
override;
73 int Stat(
const char *pszFilename,
VSIStatBufL *pStatBuf,
75 int Unlink(
const char *pszFilename)
override;
76 int Rename(
const char *oldpath,
const char * )
override;
77 int Mkdir(
const char *pszDirname,
long nMode)
override;
78 int Rmdir(
const char *pszDirname)
override;
79 char **ReadDirEx(
const char *pszDirname,
int nMaxFiles)
override;
80 char **SiblingFiles(
const char *pszFilename)
override;
81 int HasOptimizedReadMultiRange(
const char *pszPath)
override;
93 VSIPluginFilesystemHandler *poFS;
97 VSIPluginHandle(VSIPluginFilesystemHandler *poFS,
void *cbData);
98 ~VSIPluginHandle()
override;
102 size_t Read(
void *pBuffer,
size_t nSize,
size_t nCount)
override;
103 int ReadMultiRange(
int nRanges,
void **ppData,
105 const size_t *panSizes)
override;
106 void AdviseRead(
int nRanges,
const vsi_l_offset *panOffsets,
107 const size_t *panSizes)
override;
110 void ClearErr()
override;
112 int Error()
override;
113 size_t Write(
const void *pBuffer,
size_t nSize,
size_t nCount)
override;
114 int Flush()
override;
116 int Close()
override;
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:1030
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1179
Various convenience functions for working with strings and string lists.
#define VSIStatBufL
Type for VSIStatL()
Definition: cpl_vsi.h:189
VSIRangeStatus
Range status.
Definition: cpl_vsi.h:168
GUIntBig vsi_l_offset
Type for a file offset.
Definition: cpl_vsi.h:130
struct containing callbacks to used by the handler.
Definition: cpl_vsi.h:701
Virtual file handle.
Definition: cpl_vsi_virtual.h:47