00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #pragma once
00033
00052 #include "FmsAdaptor.h"
00053
00054 class IFmsFileAdaptor;
00055 class IFmsFileResponse;
00056 class IFmsServerContext;
00057
00058
00082 extern "C" void FCExport FmsCreateFileAdaptor(
00083 IFmsServerContext* pServerCtx,
00084 IFmsFileResponse* pResponse,
00085 IFmsFileAdaptor*& pFileAdaptor );
00086
00101 extern "C" void FCExport FmsDestroyFileAdaptor(
00102 IFmsFileAdaptor* pFileAdaptor );
00103
00104
00113 struct FmsFileAttribute
00114 {
00124 enum Type {
00125 kAll,
00126 kTimeCreated,
00127 kTimeModified,
00128 kTimeAccessed,
00129 kSize
00130 };
00131
00135 int attr;
00136
00140 FmsVariant value;
00141 };
00142
00143
00154 class IFmsFileAdaptor
00155 {
00156 public:
00167 enum RemoveFlags
00168 {
00169 kFile = 0,
00170 kDirs = 0x01,
00171 kSubDirs = 0x02,
00172 kEmptyDirs = 0x04,
00173 kWildCards = 0x08,
00174
00175 };
00176
00177
00218 virtual int open(
00219 const char* sFileName,
00220 int iFlags,
00221 int iMode,
00222 int* pAttrKeys,
00223 int nAttrs,
00224 void* pCtx ) = 0;
00225
00226
00261 virtual int getAttributes(
00262 const char* sFileName,
00263 int* pAttrKeys,
00264 int nAttrs,
00265 void* pCtx ) = 0;
00266
00267
00299 virtual int getAttributes(
00300 int iHandle,
00301 int* pAttrKeys,
00302 int nAttrs,
00303 void* pCtx ) = 0;
00304
00305
00335 virtual int read(
00336 int iHandle,
00337 I64 uOffset,
00338 char* pBuffer,
00339 int nBytes,
00340 void* pCtx ) = 0;
00341
00342
00368 virtual int write(
00369 int iHandle,
00370 I64 uOffset,
00371 char* pBuffer,
00372 int nBytes,
00373 void* pCtx ) = 0;
00374
00390 virtual int close( int iHandle, void* pCtx ) = 0;
00391
00392
00416 virtual int remove(
00417 const char* sFileName,
00418 unsigned long uFlags,
00419 void* pCtx ) = 0;
00420
00438 virtual int createDir(
00439 const char* sFileName,
00440 void* pCtx ) = 0;
00441
00442
00443 virtual ~IFmsFileAdaptor() {}
00444 };
00445
00460 class IFmsFileResponse
00461 {
00462 public:
00463 enum {
00467 kSystemErrors = 0x0000ffff,
00471 kVendorError = 0xffff0000,
00475 kUnimplemented = 1,
00479 kInvalidHandle = 2
00480 };
00481
00482
00508 virtual void onOpen(
00509 U32 uStatus,
00510 int iHandle,
00511 FmsFileAttribute* pAttrs,
00512 int nAttrs,
00513 void *pCtx ) = 0;
00514
00515
00537 virtual void onGetAttributes(
00538 U32 uStatus,
00539 FmsFileAttribute* pAttrValues,
00540 int nAttrs,
00541 void* pCtx ) = 0;
00542
00543
00566 virtual void onRead( U32 uStatus, void* pBuffer, int nBytes, void* pCtx ) = 0;
00567
00586 virtual void onWrite( U32 uStatus, int nBytes, void* pCtx ) = 0;
00587
00588
00603 virtual void onClose( U32 uStatus, void* pCtx ) = 0;
00604
00605
00620 virtual void onRemove( U32 uStatus, void* pCtx ) = 0;
00621
00636 virtual void onCreateDir( U32 uStatus, void* pCtx ) = 0;
00637
00638
00639 virtual ~IFmsFileResponse() {}
00640 };
00641