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,
79 bool bSetError )
override;
81 int Stat (
const char *pszFilename,
VSIStatBufL *pStatBuf,
int nFlags )
override;
82 int Unlink (
const char * pszFilename )
override;
83 int Rename (
const char * oldpath,
const char * )
override;
84 int Mkdir (
const char * pszDirname,
long nMode )
override;
85 int Rmdir (
const char * pszDirname )
override;
86 char **ReadDir (
const char *pszDirname )
override
87 {
return ReadDirEx(pszDirname, 0); }
88 char **ReadDirEx(
const char * pszDirname,
int nMaxFiles )
override;
89 int HasOptimizedReadMultiRange(
const char* pszPath )
override;
102 VSIPluginFilesystemHandler* poFS;
107 VSIPluginHandle( VSIPluginFilesystemHandler* poFS,
void *cbData);
108 ~VSIPluginHandle()
override;
112 size_t Read(
void *pBuffer,
size_t nSize,
size_t nCount )
override;
113 int ReadMultiRange(
int nRanges,
void ** ppData,
const vsi_l_offset* panOffsets,
const size_t* panSizes )
override;
116 size_t Write(
const void *pBuffer,
size_t nSize,
size_t nCount)
override;
117 int Flush()
override;
119 int Close()
override;
126 #endif // CPL_VSIL_PLUGIN_H_INCLUDED
#define CPL_LSBWORD32(x)
Definition: cpl_port.h:826
const char * CPLReadLineL(VSILFILE *)
Definition: cpl_conv.cpp:630
char ** CSLTokenizeString2(const char *pszString, const char *pszDelimiter, int nCSLTFlags)
Definition: cpl_string.cpp:836
unsigned char GByte
Definition: cpl_port.h:215
size_t VSIFReadL(void *, size_t, size_t, VSILFILE *) EXPERIMENTAL_CPL_WARN_UNUSED_RESULT
Read bytes from file.
Definition: cpl_vsil.cpp:1690
void VSIFreeFilesystemPluginCallbacksStruct(VSIFilesystemPluginCallbacksStruct *poCb)
Definition: cpl_vsil_plugin.cpp:354
void * CPLZLibInflate(const void *ptr, size_t nBytes, void *outptr, size_t nOutAvailableBytes, size_t *pnOutBytes)
Uncompress a buffer compressed with ZLib DEFLATE compression.
Definition: cpl_conv.cpp:3116
#define CPLAssertAlwaysEval(expr)
Definition: cpl_error.h:189
int CPLPrintUIntBig(char *, GUIntBig, int)
Definition: cpl_conv.cpp:1350
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:439
void * CPLCalloc(size_t, size_t)
Definition: cpl_conv.cpp:138
CPLErr CPLCloseZip(void *hZip)
Definition: cpl_conv.cpp:3105
void VSIInstallAzureStreamingFileHandler(void)
Install /vsiaz_streaming/ Microsoft Azure Blob file system handler (requires libcurl)
Definition: cpl_vsil_curl_streaming.cpp:2139
void * VSIRealloc(void *, size_t)
Definition: cpl_vsisimple.cpp:681
int VSIInstallPluginHandler(const char *pszPrefix, const VSIFilesystemPluginCallbacksStruct *poCb)
Definition: cpl_vsil_plugin.cpp:344
VSIRangeStatus
Definition: cpl_vsi.h:176
virtual int Close()=0
Close file.
Convenient string class based on std::string.
Definition: cpl_string.h:330
virtual int Flush()
Flush pending writes to disk.
Definition: cpl_vsi_virtual.h:66
#define EQUAL(a, b)
Definition: cpl_port.h:569
Definition: cpl_vsi.h:506
int VSIFCloseL(VSILFILE *) EXPERIMENTAL_CPL_WARN_UNUSED_RESULT
Close file.
Definition: cpl_vsil.cpp:1472
virtual vsi_l_offset Tell()=0
Tell current file offset.
CPLErr CPLCloseFileInZip(void *hZip)
Definition: cpl_conv.cpp:3103
CPLStringList & AddString(const char *pszNewString)
Definition: cplstringlist.cpp:333
#define CPLAssert(expr)
Definition: cpl_error.h:186
const char * VSIGetFileSystemOptions(const char *pszFilename)
Return the list of options associated with a virtual file system handler as a serialized XML string.
Definition: cpl_vsil.cpp:2360
@ VSI_RANGE_STATUS_UNKNOWN
Definition: cpl_vsi.h:177
VSIFilesystemPluginCallbacksStruct * VSIAllocFilesystemPluginCallbacksStruct(void)
Definition: cpl_vsil_plugin.cpp:351
bool CPLTestBool(const char *pszValue)
Definition: cpl_string.cpp:1526
void VSIInstallGZipFileHandler(void)
Install GZip file system handler.
Definition: cpl_vsil_gzip.cpp:2449
virtual size_t Read(void *pBuffer, size_t nSize, size_t nCount)=0
Read bytes from file.
char ** CSLConstList
Definition: cpl_port.h:1194
#define CPL_FRMT_GUIB
Definition: cpl_port.h:318
vsi_l_offset VSIFTellL(VSILFILE *)
Tell current file offset.
Definition: cpl_vsil.cpp:1575
unsigned long long GUIntBig
Definition: cpl_port.h:251
void * CPLCreateZip(const char *pszZipFilename, char **papszOptions)
Definition: cpl_conv.cpp:3091
void VSIInstallGSFileHandler(void)
Install /vsigs/ Google Cloud Storage file system handler (requires libcurl)
Definition: cpl_vsil_gs.cpp:329
void CPLDebug(const char *, const char *,...)
Definition: cpl_error.cpp:602
void VSIInstallHdfsHandler(void)
Install /vsihdfs/ file system handler (non-functional stub)
Definition: cpl_vsil_hdfs.cpp:431
#define STARTS_WITH(a, b)
Definition: cpl_port.h:578
void * CPLMalloc(size_t)
Definition: cpl_conv.cpp:168
void VSIInstallGSStreamingFileHandler(void)
Install /vsigs_streaming/ Google Cloud Storage file system handler (requires libcurl)
Definition: cpl_vsil_curl_streaming.cpp:2121
void VSIInstallCurlStreamingFileHandler(void)
Install /vsicurl_streaming/ HTTP/FTP file system handler (requires libcurl).
Definition: cpl_vsil_curl_streaming.cpp:2084
#define VSI_CALLOC_VERBOSE(nCount, nSize)
Definition: cpl_vsi.h:283
int VSIFSeekL(VSILFILE *, vsi_l_offset, int) EXPERIMENTAL_CPL_WARN_UNUSED_RESULT
Seek to requested offset.
Definition: cpl_vsil.cpp:1532
const char * CPLSPrintf(const char *fmt,...)
Definition: cpl_string.cpp:977
virtual size_t Write(const void *pBuffer, size_t nSize, size_t nCount)=0
Write bytes to file.
char ** CSLAddNameValue(char **papszStrList, const char *pszName, const char *pszValue)
Definition: cpl_string.cpp:1838
Definition: cpl_multiproc.h:140
void CPLError(CPLErr eErrClass, CPLErrorNum err_no, const char *fmt,...)
Definition: cpl_error.cpp:308
void VSIInstallZipFileHandler(void)
Install ZIP file system handler.
Definition: cpl_vsil_gzip.cpp:3320
GUIntBig vsi_l_offset
Definition: cpl_vsi.h:140
void VSIFree(void *)
Definition: cpl_vsisimple.cpp:827
#define CPLE_NotSupported
Definition: cpl_error.h:109
void VSIInstallOSSFileHandler(void)
Install /vsioss/ Alibaba Cloud Object Storage Service (OSS) file system handler (requires libcurl)
Definition: cpl_vsil_oss.cpp:388
#define CPL_ARRAYSIZE(array)
Definition: cpl_port.h:1045
virtual int Eof()=0
Test for end of file.
#define VSI_STAT_EXISTS_FLAG
Definition: cpl_vsi.h:203
CPLErr CPLWriteFileInZip(void *hZip, const void *pBuffer, int nBufferSize)
Definition: cpl_conv.cpp:3101
void * VSIMalloc(size_t)
Definition: cpl_vsisimple.cpp:558
void CSLDestroy(char **papszStrList)
Definition: cpl_string.cpp:200
long long GIntBig
Definition: cpl_port.h:248
int VSIStatExL(const char *pszFilename, VSIStatBufL *psStatBuf, int nFlags)
Get filesystem object info.
Definition: cpl_vsil.cpp:776
Definition: cpl_worker_thread_pool.h:76
#define CPL_UNUSED
Definition: cpl_port.h:948
struct stat64 VSIStatBufL
Definition: cpl_vsi.h:194
void VSIInstallOSSStreamingFileHandler(void)
Install /vsioss_streaming/ Alibaba Cloud Object Storage Service (OSS) file system handler (requires l...
Definition: cpl_vsil_curl_streaming.cpp:2158
void VSIInstallSwiftStreamingFileHandler(void)
Install /vsiswift_streamin/ OpenStack Swif Object Storage (Swift) file system handler (requires libcu...
Definition: cpl_vsil_curl_streaming.cpp:2177
char ** StealList()
Definition: cplstringlist.cpp:489
void VSIInstallS3StreamingFileHandler(void)
Install /vsis3_streaming/ Amazon S3 file system handler (requires libcurl).
Definition: cpl_vsil_curl_streaming.cpp:2102
Definition: cpl_vsi_virtual.h:56
VSILFILE * VSIFOpenL(const char *, const char *)
Open file.
Definition: cpl_vsil.cpp:997
char * CPLStrdup(const char *)
Definition: cpl_conv.cpp:293
GUIntBig CPLScanUIntBig(const char *, int)
Definition: cpl_conv.cpp:964
CPLErr CPLCreateFileInZip(void *hZip, const char *pszFilename, char **papszOptions)
Definition: cpl_conv.cpp:3099
#define CPLE_FileIO
Definition: cpl_error.h:103
#define CPLFree
Definition: cpl_conv.h:81
#define CPL_DISALLOW_COPY_ASSIGN(ClassName)
Definition: cpl_port.h:997
#define VSI_STAT_SIZE_FLAG
Definition: cpl_vsi.h:207
int VSIFPrintfL(VSILFILE *, const char *,...) EXPERIMENTAL_CPL_WARN_UNUSED_RESULT
Formatted write to file.
Definition: cpl_vsil.cpp:1918
const char * CPLGetConfigOption(const char *, const char *)
Definition: cpl_conv.cpp:1692
FILE VSILFILE
Definition: cpl_vsi.h:156
virtual int Seek(vsi_l_offset nOffset, int nWhence)=0
Seek to requested offset.
#define STARTS_WITH_CI(a, b)
Definition: cpl_port.h:580
#define CPLE_AppDefined
Definition: cpl_error.h:99
unsigned int GUInt32
Definition: cpl_port.h:207
Generated for GDAL by
1.8.20.