FOBJ-SPI
FLAM Object Store Exit (FOBJ) Service Provider Interface (SPI) Version: 5.2.1-42969
Function parameter structures

One structure per function code; collected in TuFobjPar. More...

Data Structures

struct  FobjOpn
 Parameters for FOBJ_FUNC_OPN. More...
struct  FobjCls
 Parameters for FOBJ_FUNC_CLS. More...
struct  FobjGet
 Parameters for FOBJ_FUNC_GET. More...
struct  FobjPut
 Parameters for FOBJ_FUNC_PUT. More...
struct  FobjDel
 Parameters for FOBJ_FUNC_DEL. More...
struct  FobjChk
 Parameters for FOBJ_FUNC_CHK. More...
struct  FobjDst
 Parameters for FOBJ_FUNC_DST. More...
struct  FobjExs
 Parameters for FOBJ_FUNC_EXS. More...
struct  FobjNew
 Parameters for FOBJ_FUNC_NEW. More...
struct  FobjFre
 Parameters for FOBJ_FUNC_FRE. More...
union  FobjPar
 Union of all FOBJ function parameter structures. More...

Typedefs

typedef struct FobjOpn TsFobjOpn
 Parameters for FOBJ_FUNC_OPN.
typedef struct FobjCls TsFobjCls
 Parameters for FOBJ_FUNC_CLS.
typedef struct FobjGet TsFobjGet
 Parameters for FOBJ_FUNC_GET.
typedef struct FobjPut TsFobjPut
 Parameters for FOBJ_FUNC_PUT.
typedef struct FobjDel TsFobjDel
 Parameters for FOBJ_FUNC_DEL.
typedef struct FobjChk TsFobjChk
 Parameters for FOBJ_FUNC_CHK.
typedef struct FobjDst TsFobjDst
 Parameters for FOBJ_FUNC_DST.
typedef struct FobjExs TsFobjExs
 Parameters for FOBJ_FUNC_EXS.
typedef struct FobjNew TsFobjNew
 Parameters for FOBJ_FUNC_NEW.
typedef struct FobjFre TsFobjFre
 Parameters for FOBJ_FUNC_FRE.
typedef union FobjPar TuFobjPar
 Union of all FOBJ function parameter structures.

Detailed Description

One structure per function code; collected in TuFobjPar.

Typedef Documentation

◆ TsFobjChk

typedef struct FobjChk TsFobjChk

Parameters for FOBJ_FUNC_CHK.

The provider sets isExists to 1 if the object exists and its data length is greater than or equal to uiMinLen; otherwise 0. The return code is always FLMRTC_OK; the result is in isExists.

Note
The two cases "object not found" and "object found but smaller than uiMinLen" both set isExists=0 and are told apart by isTooShort. A provider that cannot distinguish them, or that predates the field, leaves isTooShort at 0 and the caller reads the answer as "not found", which is what the interface answered before the field existed.

The OBJSSE bridge maps isExists=1 to FLMRTC_OK, isExists=0 with isTooShort=1 to FLMRTC_RNG, and isExists=0 with isTooShort=0 to FLMRTC_ONF – the same three answers every other object store gives, with OBJFLDR as the reference implementation.

◆ TsFobjCls

typedef struct FobjCls TsFobjCls

Parameters for FOBJ_FUNC_CLS.

The driver sets isCommit before the call. Statistics are tracked by the driver itself and are not requested from the provider.

◆ TsFobjDel

typedef struct FobjDel TsFobjDel

Parameters for FOBJ_FUNC_DEL.

◆ TsFobjDst

typedef struct FobjDst TsFobjDst

Parameters for FOBJ_FUNC_DST.

Deletes the entire namespace/version store opened by OPN. Called by FLAM during archive version deletion. No output fields are currently defined; the provider signals success or failure via *piRetco only.

◆ TsFobjExs

typedef struct FobjExs TsFobjExs

Parameters for FOBJ_FUNC_EXS.

Check whether the object identified by pcKeyStr exists in the store. Called in NEW state; the provider manages any temporary connection internally.

◆ TsFobjFre

typedef struct FobjFre TsFobjFre

Parameters for FOBJ_FUNC_FRE.

No input parameters. The provider must free the handle allocated by FOBJ_FUNC_NEW and set *ppHdl to NULL.

◆ TsFobjGet

typedef struct FobjGet TsFobjGet

Parameters for FOBJ_FUNC_GET.

Locate semantics: the provider writes a pointer to its internal buffer into *ppDatPtr and the number of valid bytes into uiDatLen. The pointer must remain valid until the next call to FOBJ_FUNC_GET or FOBJ_FUNC_CLS on the same handle. The provider owns and frees the buffer; the caller must not free it.

Providers backed by a remote store must allocate an internal buffer and write its address into *ppDatPtr. For memory-mapped or in-process backends this is truly zero-copy.

◆ TsFobjNew

typedef struct FobjNew TsFobjNew

Parameters for FOBJ_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 FOBJ_FUNC_OPN, FOBJ_FUNC_DST, and FOBJ_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.

◆ TsFobjOpn

typedef struct FobjOpn TsFobjOpn

Parameters for FOBJ_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.

Version ID semantics (siVerId)
Unlike the FSEG SPI, the FOBJ SPI always receives siVerId == -1. The SEGOBJ layer above the FOBJ provider manages versioning by embedding the version ID into every object key as a prefix (e.g. "{namespace}/{version:020lld}/{opaque_key}"). The FOBJ provider therefore only needs to implement a flat string-keyed object store and does not need to interpret siVerId. Providers may safely ignore the siVerId field.

◆ TsFobjPut

typedef struct FobjPut TsFobjPut

Parameters for FOBJ_FUNC_PUT.

◆ TuFobjPar

typedef union FobjPar TuFobjPar

Union of all FOBJ function parameter structures.

Access only the member that corresponds to the current function code.