One structure per function code; collected in TuFsegPar. More...
Data Structures | |
| struct | FsegOpn |
| Parameters for FSEG_FUNC_OPN. More... | |
| struct | FsegCls |
| Parameters for FSEG_FUNC_CLS. More... | |
| struct | FsegPut |
| Parameters for FSEG_FUNC_PUT. More... | |
| struct | FsegGet |
| Parameters for FSEG_FUNC_GET. More... | |
| struct | FsegDel |
| Parameters for FSEG_FUNC_DEL. More... | |
| struct | FsegExs |
| Parameters for FSEG_FUNC_EXS. More... | |
| struct | FsegGmn |
| Parameters for FSEG_FUNC_GMN. More... | |
| struct | FsegSmn |
| Parameters for FSEG_FUNC_SMN. More... | |
| struct | FsegVsnEnt |
| Single version entry returned by FSEG_FUNC_VLS. More... | |
| struct | FsegVls |
| Parameters for FSEG_FUNC_VLS. More... | |
| struct | FsegDvs |
| Parameters for FSEG_FUNC_DVS. More... | |
| struct | FsegDar |
| Parameters for FSEG_FUNC_DAR. More... | |
| struct | FsegPrn |
| Parameters for FSEG_FUNC_PRN. More... | |
| struct | FsegCbf |
| Parameters for FSEG_FUNC_CBF. More... | |
| struct | FsegFlb |
| Parameters for FSEG_FUNC_FLB. More... | |
| struct | FsegNew |
| Parameters for FSEG_FUNC_NEW. More... | |
| struct | FsegFre |
| Parameters for FSEG_FUNC_FRE. More... | |
| union | FsegPar |
| Union of all FSEG function parameter structures. More... | |
Typedefs | |
| typedef struct FsegOpn | TsFsegOpn |
| Parameters for FSEG_FUNC_OPN. | |
| typedef struct FsegCls | TsFsegCls |
| Parameters for FSEG_FUNC_CLS. | |
| typedef struct FsegPut | TsFsegPut |
| Parameters for FSEG_FUNC_PUT. | |
| typedef struct FsegGet | TsFsegGet |
| Parameters for FSEG_FUNC_GET. | |
| typedef struct FsegDel | TsFsegDel |
| Parameters for FSEG_FUNC_DEL. | |
| typedef struct FsegExs | TsFsegExs |
| Parameters for FSEG_FUNC_EXS. | |
| typedef struct FsegGmn | TsFsegGmn |
| Parameters for FSEG_FUNC_GMN. | |
| typedef struct FsegSmn | TsFsegSmn |
| Parameters for FSEG_FUNC_SMN. | |
| typedef struct FsegVsnEnt | TsFsegVsnEnt |
| Single version entry returned by FSEG_FUNC_VLS. | |
| typedef struct FsegVls | TsFsegVls |
| Parameters for FSEG_FUNC_VLS. | |
| typedef struct FsegDvs | TsFsegDvs |
| Parameters for FSEG_FUNC_DVS. | |
| typedef struct FsegDar | TsFsegDar |
| Parameters for FSEG_FUNC_DAR. | |
| typedef struct FsegPrn | TsFsegPrn |
| Parameters for FSEG_FUNC_PRN. | |
| typedef struct FsegCbf | TsFsegCbf |
| Parameters for FSEG_FUNC_CBF. | |
| typedef struct FsegFlb | TsFsegFlb |
| Parameters for FSEG_FUNC_FLB. | |
| typedef struct FsegNew | TsFsegNew |
| Parameters for FSEG_FUNC_NEW. | |
| typedef struct FsegFre | TsFsegFre |
| Parameters for FSEG_FUNC_FRE. | |
| typedef union FsegPar | TuFsegPar |
| Union of all FSEG function parameter structures. | |
One structure per function code; collected in TuFsegPar.
Parameters for FSEG_FUNC_CBF.
Instructs the provider to create an internal write buffer. The provider assigns a buffer ID and returns it in uiBufId. Subsequent PUT calls belong to this buffer until FSEG_FUNC_FLB is called.
Providers that do not support batching may treat CBF/FLB as no-ops and return uiBufId = 0.
Parameters for FSEG_FUNC_CLS.
The driver sets isCommit before the call. The provider fills the output byte-count fields so SEGSSE can expose them as SegmentStore statistics (enabling FLMSTO to compute and log the overhead). Deletion of the archive is handled by FSEG_FUNC_DAR, not by CLS.
Parameters for FSEG_FUNC_DAR.
Deletes the entire archive including all versions and the namespace.
Parameters for FSEG_FUNC_DEL.
Parameters for FSEG_FUNC_DVS.
Deletes one specific version of the archive.
Parameters for FSEG_FUNC_EXS.
The provider sets *piRetco to 0 on success (whether or not the segment exists) and writes the existence result into isExists. A non-zero *piRetco signals an actual provider error (storage failure, I/O error, etc.) and isExists is ignored in that case.
Mapping to the FLAM layer:
isExists == 1 and *piRetco == 0 --> FLMRTC_OK (segment found)isExists == 0 and *piRetco == 0 --> FLMRTC_IDX (segment not found)*piRetco != 0 --> FLMRTC_FSG (provider error) Parameters for FSEG_FUNC_FLB.
Requests the provider to commit all buffered PUT operations to permanent storage.
Parameters for FSEG_FUNC_FRE.
No input parameters. The provider must free the handle allocated by FSEG_FUNC_NEW and set *ppHdl to NULL. Must only be called in NEW state (storage connection already closed via FSEG_FUNC_CLS).
Parameters for FSEG_FUNC_GET.
This is a locate call: the provider writes a pointer to its internal buffer into *ppSegDat without copying data to a caller-supplied buffer. The pointed-to buffer must remain valid until the next FSEG_FUNC_GET call or FSEG_FUNC_CLS, whichever comes first. The provider owns the buffer and must not free it before then.
*ppSegDat and the length to uiSegLen. The buffer is then freed either at the next GET call or at CLS. FLAM does not call free() on this pointer. Parameters for FSEG_FUNC_GMN.
Returns the main (root) segment index for the open archive version. If no main segment has been set yet, the provider writes FSEG_IDX_INI to siSegInd.
Parameters for FSEG_FUNC_NEW.
The bridge passes the archive namespace and provider parameter string so the provider can copy them into its handle for use in subsequent FSEG_FUNC_OPN, FSEG_FUNC_DAR, FSEG_FUNC_PRN, and FSEG_FUNC_EXS calls. No storage I/O takes place.
On entry *ppHdl is NULL. The provider must allocate its handle and write the pointer to *ppHdl.
Parameters for FSEG_FUNC_OPN.
The driver populates all fields before the call. The provider must not retain pointers to pcNamStr or pcParStr beyond the OPN call; copy any strings that are needed for later calls.
siVerId >= 0 : open the specified existing version.siVerId == -1 with FSEG_FLAG_WRITE set: create a new version. The provider must allocate a unique version ID internally (e.g. a monotonically increasing counter or a timestamp) and use it for all subsequent PUT calls in this session.siVerId == -1 without FSEG_FLAG_WRITE: open the latest (highest version ID) existing version for reading. Parameters for FSEG_FUNC_PRN.
Deletes old versions, keeping the uiKeepCnt most recent ones.
Parameters for FSEG_FUNC_PUT.
The provider assigns the segment index and writes it to siSegInd. Indices must be stable; once assigned, the same index must retrieve the same data until the segment is deleted.
Parameters for FSEG_FUNC_SMN.
Persists the main (root) segment index for the open archive version.
Parameters for FSEG_FUNC_VLS.
The provider allocates the version list array with malloc() and writes its address to psVsnEnt. FLAM frees the array with the standard free() function after use.
malloc() and free() in different DLLs operate on separate C runtime heaps by default. If the provider DLL and FLAM are linked against different runtime libraries, the free() call in FLAM will corrupt or crash the process. To avoid this:CEEPLPKA) so they share a single C runtime heap.psVsnEnt to NULL and uiVsnCnt to 0 to signal "no versioning support", if the backend does not support version enumeration. | typedef struct FsegVsnEnt TsFsegVsnEnt |
Single version entry returned by FSEG_FUNC_VLS.