Snapdragon® Telematics Application Framework (TelAF) Interface Specification
taf_diagUpdate_client.c File Reference

Data Structures

struct  _ClientThreadData_t
 

Macros

#define LOCK_INIT   le_mutex_Lock(le_ifgen_InitMutexRef);
 Locks the mutex. More...
 
#define UNLOCK_INIT   le_mutex_Unlock(le_ifgen_InitMutexRef);
 Unlocks the mutex. More...
 

Functions

 LE_MEM_DEFINE_STATIC_POOL (taf_diagUpdate_ClientThreadData, LE_CDATA_COMPONENT_COUNT, sizeof(_ClientThreadData_t))
 
static le_result_t InitClientForThread (bool isBlocking)
 
static _ClientThreadData_tGetClientThreadDataPtr (void)
 
 __attribute__ ((unused))
 
static void ClientThreadDestructor (void *objPtr)
 
static void InitCommonData (void)
 
static le_result_t DoConnectService (bool isBlocking)
 
void taf_diagUpdate_ConnectService (void)
 
le_result_t taf_diagUpdate_TryConnectService (void)
 
static void SessionCloseHandler (le_msg_SessionRef_t sessionRef, void *contextPtr)
 
void taf_diagUpdate_SetServerDisconnectHandler (taf_diagUpdate_DisconnectHandler_t disconnectHandler, void *contextPtr)
 
static void NonExitSessionCloseHandler (le_msg_SessionRef_t sessionRef, void *contextPtr)
 
void taf_diagUpdate_SetNonExitServerDisconnectHandler (taf_diagUpdate_DisconnectHandler_t disconnectHandler, void *contextPtr)
 
void taf_diagUpdate_DisconnectService (void)
 
taf_diagUpdate_ServiceRef_t taf_diagUpdate_GetService (void)
 
taf_diagUpdate_RxFileXferMsgHandlerRef_t taf_diagUpdate_AddRxFileXferMsgHandler (taf_diagUpdate_ServiceRef_t svcRef, taf_diagUpdate_RxFileXferMsgHandlerFunc_t handlerPtr, void *contextPtr)
 
void taf_diagUpdate_RemoveRxFileXferMsgHandler (taf_diagUpdate_RxFileXferMsgHandlerRef_t handlerRef)
 
le_result_t taf_diagUpdate_GetFilePathAndName (taf_diagUpdate_RxFileXferMsgRef_t rxMsgRef, uint8_t *fileNamePtr, size_t *fileNameSizePtr)
 
le_result_t taf_diagUpdate_GetDataFormatID (taf_diagUpdate_RxFileXferMsgRef_t rxMsgRef, uint8_t *dataFormatIDPtr)
 
le_result_t taf_diagUpdate_GetUnCompFileSize (taf_diagUpdate_RxFileXferMsgRef_t rxMsgRef, uint32_t *unCompFileSizePtr)
 
le_result_t taf_diagUpdate_GetCompFileSize (taf_diagUpdate_RxFileXferMsgRef_t rxMsgRef, uint32_t *compFileSizePtr)
 
le_result_t taf_diagUpdate_SetFilePosition (taf_diagUpdate_RxFileXferMsgRef_t rxMsgRef, uint64_t filePosition)
 
le_result_t taf_diagUpdate_SetFileSizeOrDirInfoLength (taf_diagUpdate_RxFileXferMsgRef_t rxMsgRef, uint64_t fileSizeUncompressedOrDirInfoLength, uint64_t fileSizeCompressed)
 
le_result_t taf_diagUpdate_SendFileXferResp (taf_diagUpdate_RxFileXferMsgRef_t rxMsgRef, taf_diagUpdate_FileXferErrorCode_t errCode)
 
taf_diagUpdate_RxXferDataMsgHandlerRef_t taf_diagUpdate_AddRxXferDataMsgHandler (taf_diagUpdate_ServiceRef_t svcRef, taf_diagUpdate_RxXferDataMsgHandlerFunc_t handlerPtr, void *contextPtr)
 
void taf_diagUpdate_RemoveRxXferDataMsgHandler (taf_diagUpdate_RxXferDataMsgHandlerRef_t handlerRef)
 
le_result_t taf_diagUpdate_GetblockSeqCount (taf_diagUpdate_RxXferDataMsgRef_t rxMsgRef, uint8_t *countPtr)
 
le_result_t taf_diagUpdate_GetXferDataParamRecLen (taf_diagUpdate_RxXferDataMsgRef_t rxMsgRef, uint16_t *xferDataRecLenPtr)
 
le_result_t taf_diagUpdate_GetXferDataParamRec (taf_diagUpdate_RxXferDataMsgRef_t rxMsgRef, uint8_t *xferDataRecPtr, size_t *xferDataRecSizePtr)
 
le_result_t taf_diagUpdate_SendXferDataResp (taf_diagUpdate_RxXferDataMsgRef_t rxMsgRef, taf_diagUpdate_XferDataErrorCode_t errCode, const uint8_t *dataPtr, size_t dataSize)
 
taf_diagUpdate_RxXferExitMsgHandlerRef_t taf_diagUpdate_AddRxXferExitMsgHandler (taf_diagUpdate_ServiceRef_t svcRef, taf_diagUpdate_RxXferExitMsgHandlerFunc_t handlerPtr, void *contextPtr)
 
void taf_diagUpdate_RemoveRxXferExitMsgHandler (taf_diagUpdate_RxXferExitMsgHandlerRef_t handlerRef)
 
le_result_t taf_diagUpdate_GetXferExitParamRecLen (taf_diagUpdate_RxXferExitMsgRef_t rxMsgRef, uint16_t *exitDataRecLenPtr)
 
le_result_t taf_diagUpdate_GetXferExitParamRec (taf_diagUpdate_RxXferExitMsgRef_t rxMsgRef, uint8_t *exitDataRecPtr, size_t *exitDataRecSizePtr)
 
le_result_t taf_diagUpdate_SendXferExitResp (taf_diagUpdate_RxXferExitMsgRef_t rxMsgRef, taf_diagUpdate_XferExitErrorCode_t errCode, const uint8_t *dataPtr, size_t dataSize)
 
le_result_t taf_diagUpdate_RemoveSvc (taf_diagUpdate_ServiceRef_t svcRef)
 

Variables

static le_mem_PoolRef_t _ClientThreadDataPool
 
static pthread_key_t _ThreadDataKey
 
static bool CommonDataInitialized = false
 
le_mutex_Ref_t le_ifgen_InitMutexRef
 

Macro Definition Documentation

◆ LOCK_INIT

#define LOCK_INIT   le_mutex_Lock(le_ifgen_InitMutexRef);

Locks the mutex.

◆ UNLOCK_INIT

#define UNLOCK_INIT   le_mutex_Unlock(le_ifgen_InitMutexRef);

Unlocks the mutex.

Function Documentation

◆ LE_MEM_DEFINE_STATIC_POOL()

LE_MEM_DEFINE_STATIC_POOL ( taf_diagUpdate_ClientThreadData  ,
LE_CDATA_COMPONENT_COUNT  ,
sizeof(_ClientThreadData_t  
)

Static pool for client threads.

◆ InitClientForThread()

static le_result_t InitClientForThread ( bool  isBlocking)
static

Initialize thread specific data, and connect to the service for the current thread.

Returns
  • LE_OK if the client connected successfully to the service.
  • LE_UNAVAILABLE if the server is not currently offering the service to which the client is bound.
  • LE_NOT_PERMITTED if the client interface is not bound to any service (doesn't have a binding).
  • LE_COMM_ERROR if the Service Directory cannot be reached.

◆ GetClientThreadDataPtr()

static _ClientThreadData_t* GetClientThreadDataPtr ( void  )
static

Get a pointer to the client thread data for the current thread.

If the current thread does not have client data, then NULL is returned

◆ __attribute__()

__attribute__ ( (unused)  )

Return the sessionRef for the current thread.

If the current thread does not have a session ref, then this is a fatal error.

◆ ClientThreadDestructor()

static void ClientThreadDestructor ( void *  objPtr)
static

Destructor function for client thread objects.

◆ InitCommonData()

static void InitCommonData ( void  )
static

Init data that is common across all threads.

◆ DoConnectService()

static le_result_t DoConnectService ( bool  isBlocking)
static

Connect to the service, using either blocking or non-blocking calls.

This function implements the details of the public ConnectService functions.

Returns
  • LE_OK if the client connected successfully to the service.
  • LE_UNAVAILABLE if the server is not currently offering the service to which the client is bound.
  • LE_NOT_PERMITTED if the client interface is not bound to any service (doesn't have a binding).
  • LE_COMM_ERROR if the Service Directory cannot be reached.

◆ taf_diagUpdate_ConnectService()

void taf_diagUpdate_ConnectService ( void  )

Connect the current client thread to the service providing this API. Block until the service is available.

For each thread that wants to use this API, either ConnectService or TryConnectService must be called before any other functions in this API. Normally, ConnectService is automatically called for the main thread, but not for any other thread. For details, see apiFilesC_client.

This function is created automatically.

◆ taf_diagUpdate_TryConnectService()

le_result_t taf_diagUpdate_TryConnectService ( void  )

Try to connect the current client thread to the service providing this API. Return with an error if the service is not available.

For each thread that wants to use this API, either ConnectService or TryConnectService must be called before any other functions in this API. Normally, ConnectService is automatically called for the main thread, but not for any other thread. For details, see apiFilesC_client.

This function is created automatically.

Returns
  • LE_OK if the client connected successfully to the service.
  • LE_UNAVAILABLE if the server is not currently offering the service to which the client is bound.
  • LE_NOT_PERMITTED if the client interface is not bound to any service (doesn't have a binding).
  • LE_COMM_ERROR if the Service Directory cannot be reached.

◆ SessionCloseHandler()

static void SessionCloseHandler ( le_msg_SessionRef_t  sessionRef,
void *  contextPtr 
)
static

◆ taf_diagUpdate_SetServerDisconnectHandler()

void taf_diagUpdate_SetServerDisconnectHandler ( taf_diagUpdate_DisconnectHandler_t  disconnectHandler,
void *  contextPtr 
)

Set handler called when server disconnection is detected.

When a server connection is lost, call this handler then exit with LE_FATAL. If a program wants to continue without exiting, it should call longjmp() from inside the handler.

◆ NonExitSessionCloseHandler()

static void NonExitSessionCloseHandler ( le_msg_SessionRef_t  sessionRef,
void *  contextPtr 
)
static

◆ taf_diagUpdate_SetNonExitServerDisconnectHandler()

void taf_diagUpdate_SetNonExitServerDisconnectHandler ( taf_diagUpdate_DisconnectHandler_t  disconnectHandler,
void *  contextPtr 
)

Set handler called when server disconnection is detected without exiting.

When a server connection is lost, call this handler without exit.

Warning
When using the API, it needs the application developer to handle some cases like re-connecting and recycling the resources. For most of cases, it is safe to use SetServerDisconnectHandler.

◆ taf_diagUpdate_DisconnectService()

void taf_diagUpdate_DisconnectService ( void  )

Disconnect the current client thread from the service providing this API.

Normally, this function doesn't need to be called. After this function is called, there's no longer a connection to the service, and the functions in this API can't be used. For details, see apiFilesC_client.

This function is created automatically.

◆ taf_diagUpdate_GetService()

taf_diagUpdate_ServiceRef_t taf_diagUpdate_GetService ( void  )

Gets the reference to a Diag update service, if there's no Diag update service, a new one will be created.

Returns
  • Reference to the service instance.
  • NULL if not allowed to create the service.
Note
The process exits if an invalid reference is passed.

◆ taf_diagUpdate_AddRxFileXferMsgHandler()

taf_diagUpdate_RxFileXferMsgHandlerRef_t taf_diagUpdate_AddRxFileXferMsgHandler ( taf_diagUpdate_ServiceRef_t  svcRef,
taf_diagUpdate_RxFileXferMsgHandlerFunc_t  handlerPtr,
void *  contextPtr 
)

Add handler function for EVENT 'taf_diagUpdate_RxFileXferMsg'

This event provides information on RequestFileTransfer message.

Parameters
[in]svcRefService reference.
[in]handlerPtrReceived message handler.
[in]contextPtr

◆ taf_diagUpdate_RemoveRxFileXferMsgHandler()

void taf_diagUpdate_RemoveRxFileXferMsgHandler ( taf_diagUpdate_RxFileXferMsgHandlerRef_t  handlerRef)

Remove handler function for EVENT 'taf_diagUpdate_RxFileXferMsg'

Parameters
[in]handlerRef

◆ taf_diagUpdate_GetFilePathAndName()

le_result_t taf_diagUpdate_GetFilePathAndName ( taf_diagUpdate_RxFileXferMsgRef_t  rxMsgRef,
uint8_t *  fileNamePtr,
size_t *  fileNameSizePtr 
)

Gets the file path and name of the Rx RequestFileTransfer message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_NOT_FOUND – Reference not found.
  • LE_OVERFLOW – Payload size is too small.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceive message reference.
[out]fileNamePtrFile path and name.
[in,out]fileNameSizePtr

◆ taf_diagUpdate_GetDataFormatID()

le_result_t taf_diagUpdate_GetDataFormatID ( taf_diagUpdate_RxFileXferMsgRef_t  rxMsgRef,
uint8_t *  dataFormatIDPtr 
)

Gets the data format ID of the Rx RequestFileTransfer message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_NOT_FOUND – Reference not found.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceive message reference.
[out]dataFormatIDPtrData format ID.

◆ taf_diagUpdate_GetUnCompFileSize()

le_result_t taf_diagUpdate_GetUnCompFileSize ( taf_diagUpdate_RxFileXferMsgRef_t  rxMsgRef,
uint32_t *  unCompFileSizePtr 
)

Gets the size of the uncompressed file of the Rx RequestFileTransfer message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_NOT_FOUND – Reference not found.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[out]unCompFileSizePtrSize of the uncompressed file.

◆ taf_diagUpdate_GetCompFileSize()

le_result_t taf_diagUpdate_GetCompFileSize ( taf_diagUpdate_RxFileXferMsgRef_t  rxMsgRef,
uint32_t *  compFileSizePtr 
)

Gets the size of the compressed file of the Rx RequestFileTransfer message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_NOT_FOUND – Reference not found.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[out]compFileSizePtrSize of the compressed file.

◆ taf_diagUpdate_SetFilePosition()

le_result_t taf_diagUpdate_SetFilePosition ( taf_diagUpdate_RxFileXferMsgRef_t  rxMsgRef,
uint64_t  filePosition 
)

Sets the file position into RequestFileTransfer response message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef or wrong modeOfOperation.
  • LE_NOT_FOUND – Reference not found.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[in]filePositionSpecifies the byte position for downloading file resume.

◆ taf_diagUpdate_SetFileSizeOrDirInfoLength()

le_result_t taf_diagUpdate_SetFileSizeOrDirInfoLength ( taf_diagUpdate_RxFileXferMsgRef_t  rxMsgRef,
uint64_t  fileSizeUncompressedOrDirInfoLength,
uint64_t  fileSizeCompressed 
)

Sets the fileSizeUncompressedOrDirInfoLength and fileSizeCompressed into RequestFileTransfer response message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef or wrong modeOfOperation.
  • LE_NOT_FOUND – Reference not found.
  • LE_OVERFLOW – file size more than UINT32_MAX.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[in]fileSizeUncompressedOrDirInfoLengthSpecifies the size of the uncompressed file to be uploaded or the length of the directory information to be read in bytes.
[in]fileSizeCompressedSpecifies the size of the compressed file in bytes.

◆ taf_diagUpdate_SendFileXferResp()

le_result_t taf_diagUpdate_SendFileXferResp ( taf_diagUpdate_RxFileXferMsgRef_t  rxMsgRef,
taf_diagUpdate_FileXferErrorCode_t  errCode 
)

Sends a response message for the Rx RequestFileTransfer message.

Note
This function must be called to send a response if receiving a RequestFileTransfer message.
Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_NOT_FOUND – Reference not found.
  • LE_FAULT – Failed.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[in]errCodeError code type.

◆ taf_diagUpdate_AddRxXferDataMsgHandler()

taf_diagUpdate_RxXferDataMsgHandlerRef_t taf_diagUpdate_AddRxXferDataMsgHandler ( taf_diagUpdate_ServiceRef_t  svcRef,
taf_diagUpdate_RxXferDataMsgHandlerFunc_t  handlerPtr,
void *  contextPtr 
)

Add handler function for EVENT 'taf_diagUpdate_RxXferDataMsg'

This event provides information on TransferData message.

Parameters
[in]svcRefService reference.
[in]handlerPtrReceived message handler.
[in]contextPtr

◆ taf_diagUpdate_RemoveRxXferDataMsgHandler()

void taf_diagUpdate_RemoveRxXferDataMsgHandler ( taf_diagUpdate_RxXferDataMsgHandlerRef_t  handlerRef)

Remove handler function for EVENT 'taf_diagUpdate_RxXferDataMsg'

Parameters
[in]handlerRef

◆ taf_diagUpdate_GetblockSeqCount()

le_result_t taf_diagUpdate_GetblockSeqCount ( taf_diagUpdate_RxXferDataMsgRef_t  rxMsgRef,
uint8_t *  countPtr 
)

Gets the block sequence counter of the Rx TransferData message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_NOT_FOUND – Reference not found.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[out]countPtrBlock sequence counter.

◆ taf_diagUpdate_GetXferDataParamRecLen()

le_result_t taf_diagUpdate_GetXferDataParamRecLen ( taf_diagUpdate_RxXferDataMsgRef_t  rxMsgRef,
uint16_t *  xferDataRecLenPtr 
)

Gets the the data request record length of the Rx TransferData message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_NOT_FOUND – Reference not found.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[out]xferDataRecLenPtrTransfer data request parameter record length.

◆ taf_diagUpdate_GetXferDataParamRec()

le_result_t taf_diagUpdate_GetXferDataParamRec ( taf_diagUpdate_RxXferDataMsgRef_t  rxMsgRef,
uint8_t *  xferDataRecPtr,
size_t *  xferDataRecSizePtr 
)

Gets the transfer data request record of the Rx TransferData message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_OVERFLOW – Payload size is too small.
  • LE_NOT_FOUND – Reference not found.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[out]xferDataRecPtrTransfer data request parameter record.
[in,out]xferDataRecSizePtr

◆ taf_diagUpdate_SendXferDataResp()

le_result_t taf_diagUpdate_SendXferDataResp ( taf_diagUpdate_RxXferDataMsgRef_t  rxMsgRef,
taf_diagUpdate_XferDataErrorCode_t  errCode,
const uint8_t *  dataPtr,
size_t  dataSize 
)

Sends a response message for the Rx TransferData message.

Note
This function must be called to send a response if receiving a TransferData message.
Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_NOT_FOUND – Reference not found.
  • LE_FAULT – Failed.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[in]errCodeError code type.
[in]dataPtrPayload data.
[in]dataSize

◆ taf_diagUpdate_AddRxXferExitMsgHandler()

taf_diagUpdate_RxXferExitMsgHandlerRef_t taf_diagUpdate_AddRxXferExitMsgHandler ( taf_diagUpdate_ServiceRef_t  svcRef,
taf_diagUpdate_RxXferExitMsgHandlerFunc_t  handlerPtr,
void *  contextPtr 
)

Add handler function for EVENT 'taf_diagUpdate_RxXferExitMsg'

This event provides information on RequestTransferExit message.

Parameters
[in]svcRefService reference.
[in]handlerPtrReceived message handler.
[in]contextPtr

◆ taf_diagUpdate_RemoveRxXferExitMsgHandler()

void taf_diagUpdate_RemoveRxXferExitMsgHandler ( taf_diagUpdate_RxXferExitMsgHandlerRef_t  handlerRef)

Remove handler function for EVENT 'taf_diagUpdate_RxXferExitMsg'

Parameters
[in]handlerRef

◆ taf_diagUpdate_GetXferExitParamRecLen()

le_result_t taf_diagUpdate_GetXferExitParamRecLen ( taf_diagUpdate_RxXferExitMsgRef_t  rxMsgRef,
uint16_t *  exitDataRecLenPtr 
)

Gets the length of the received RequestTransferExit message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_NOT_FOUND – Reference not found.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[out]exitDataRecLenPtrTransfer exit request parameter record length.

◆ taf_diagUpdate_GetXferExitParamRec()

le_result_t taf_diagUpdate_GetXferExitParamRec ( taf_diagUpdate_RxXferExitMsgRef_t  rxMsgRef,
uint8_t *  exitDataRecPtr,
size_t *  exitDataRecSizePtr 
)

Gets the transfer exit request parameter record of the Rx RequestTransferExit message.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_OVERFLOW – Payload size is too small.
  • LE_NOT_FOUND – Reference not found.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[out]exitDataRecPtrTransfer exit request parameter record.
[in,out]exitDataRecSizePtr

◆ taf_diagUpdate_SendXferExitResp()

le_result_t taf_diagUpdate_SendXferExitResp ( taf_diagUpdate_RxXferExitMsgRef_t  rxMsgRef,
taf_diagUpdate_XferExitErrorCode_t  errCode,
const uint8_t *  dataPtr,
size_t  dataSize 
)

Sends a response message for the Rx RequestTransferExit message.

Note
This function must be called to send a response if receiving a RequestTransferExit message.
Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid rxMsgRef.
  • LE_NOT_FOUND – Reference not found.
  • LE_FAULT – Failed.
Note
The process exits if an invalid reference is passed.
Parameters
[in]rxMsgRefReceived message reference.
[in]errCodeError code type.
[in]dataPtrPayload data.
[in]dataSize

◆ taf_diagUpdate_RemoveSvc()

le_result_t taf_diagUpdate_RemoveSvc ( taf_diagUpdate_ServiceRef_t  svcRef)

Removes the Update server service.

Returns
  • LE_OK – Succeeded.
  • LE_BAD_PARAMETER – Invalid svcRef.
Parameters
[in]svcRefService reference.

Variable Documentation

◆ _ClientThreadDataPool

le_mem_PoolRef_t _ClientThreadDataPool
static

The memory pool for client thread objects

◆ _ThreadDataKey

pthread_key_t _ThreadDataKey
static

Key under which the pointer to the Thread Object (_ClientThreadData_t) will be kept in thread-local storage. This allows a thread to quickly get a pointer to its own Thread Object.

◆ CommonDataInitialized

bool CommonDataInitialized = false
static

This global flag is shared by all client threads, and is used to indicate whether the common data has been initialized.

Warning
Use InitMutex, defined below, to protect accesses to this data.

◆ le_ifgen_InitMutexRef

le_mutex_Ref_t le_ifgen_InitMutexRef

Mutex and associated macros for use with the above CommonDataInitialized.