13#ifndef CPL_VSIL_PLUGIN_H_INCLUDED
14#define CPL_VSIL_PLUGIN_H_INCLUDED
19#include "cpl_vsi_virtual.h"
32class VSIPluginFilesystemHandler :
public VSIFilesystemHandler
38 const VSIFilesystemPluginCallbacksStruct *m_cb;
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,
66 const VSIFilesystemPluginCallbacksStruct *cb);
67 ~VSIPluginFilesystemHandler()
override;
69 VSIVirtualHandleUniquePtr Open(
const char *pszFilename,
70 const char *pszAccess,
bool bSetError,
73 int Stat(
const char *pszFilename,
VSIStatBufL *pStatBuf,
75 int Unlink(
const char *pszFilename)
override;
76 int Rename(
const char *oldpath,
const char * , GDALProgressFunc,
78 int Mkdir(
const char *pszDirname,
long nMode)
override;
79 int Rmdir(
const char *pszDirname)
override;
80 char **ReadDirEx(
const char *pszDirname,
int nMaxFiles)
override;
81 char **SiblingFiles(
const char *pszFilename)
override;
82 int HasOptimizedReadMultiRange(
const char *pszPath)
override;
89class VSIPluginHandle final :
public VSIVirtualHandle
94 VSIPluginFilesystemHandler *poFS;
98 VSIPluginHandle(VSIPluginFilesystemHandler *poFS,
void *cbData);
99 ~VSIPluginHandle()
override;
103 size_t Read(
void *pBuffer,
size_t nSize,
size_t nCount)
override;
104 int ReadMultiRange(
int nRanges,
void **ppData,
106 const size_t *panSizes)
override;
107 void AdviseRead(
int nRanges,
const vsi_l_offset *panOffsets,
108 const size_t *panSizes)
override;
111 void ClearErr()
override;
113 int Error()
override;
114 size_t Write(
const void *pBuffer,
size_t nSize,
size_t nCount)
override;
115 int Flush()
override;
117 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:936
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition cpl_port.h:1087
Various convenience functions for working with strings and string lists.
#define VSIStatBufL
Type for VSIStatL().
Definition cpl_vsi.h:195
VSIRangeStatus
Range status.
Definition cpl_vsi.h:174
GUIntBig vsi_l_offset
Type for a file offset.
Definition cpl_vsi.h:136