CDI SDK
SDK for transporting chunks of data reliably and with low latency using a polled mode network driver.
Loading...
Searching...
No Matches
private.h File Reference

This header file contains definitions of types and the one global variable used internally by the SDK's implementation. These are details that do not need to be exposed to the user programs via the API. More...

#include <stdbool.h>
#include "configuration.h"
#include "cdi_avm_api.h"
#include "cdi_logger_api.h"
#include "cdi_os_api.h"
#include "cdi_pool_api.h"
#include "cdi_queue_api.h"
#include "cloudwatch_sdk_metrics.h"
#include "fifo_api.h"
#include "list_api.h"
#include "payload.h"
#include "singly_linked_list_api.h"

Go to the source code of this file.

Data Structures

struct  CdiGlobalContext
 Structure to hold variables that would otherwise be global in order to keep them contained in one manageable location. All members will be explicitly zeroed at program startup. More...
 
struct  AppPayloadCallbackData
 This defines a structure that contains all of the data required to use the application registered payload callback functions. More...
 
struct  TxPayloadState
 This defines a structure that contains all of the state information for sending a single payload. More...
 
struct  TxConState
 This defines a structure that contains all of the state information for the sending side of a single flow. More...
 
struct  RxPayloadWorkRequestState
 This defines a structure that contains all of the state information for the receiving side of a payload's work request. The lifespan of the data begins when packet #0 (CDI header) of a Rx CDI packet is received and ends when the user-registered CdiRawRxCallback() Rx callback function is invoked. More...
 
struct  CdiReorderList
 Structure containing top, bottom pointers and sequence numbers of sgls that comprise payload. when the entire payload is received, this will be one list. More...
 
struct  RxPayloadState
 This defines a structure that contains all of the state information for the receiving side of a payload. The data is only required internally by the RxPacketReceive() function and not used elsewhere. More...
 
struct  RxConState
 This defines a structure that contains all of the state information for an rx connection. The data is only required internally by receive connections. More...
 
struct  TxEndpointState
 This defines a structure that contains the state information for the sending side's endpoint of a single flow. More...
 
struct  RxEndpointState
 This defines a structure that contains the state information for an Rx endpoint. The data is only required internally by the RxPacketReceive() API and not used elsewhere. More...
 
struct  CdiEndpointState
 Structure definition behind the connection handles shared with the user's application program. Its contents are opaque to the user's program where it only has a pointer to a declared but not defined structure. More...
 
struct  CdiConnectionState
 Structure definition behind the connection handles shared with the user's application program. Its contents are opaque to the user's program where it only has a pointer to a declared but not defined structure. More...
 
struct  MemoryLinearState
 This defines a structure used to contain all of the state information for a linear buffer. More...
 
struct  CdiMemoryState
 Structure definition behind the Scatter-Gather List internal data handles shared with the user's application program. Its contents are opaque to the user's program where it only has a pointer to a declared but not defined structure. More...
 

Typedefs

typedef struct EndpointManagerGlobalState * EndpointManagerGlobalHandle
 Forward reference of structure to create pointers later.
 
typedef struct CdiAdapterState CdiAdapterState
 Forward reference of structure to create pointers later.
 
typedef struct AdapterConnectionState AdapterConnectionState
 Forward reference of structure to create pointers later.
 
typedef struct AdapterEndpointState AdapterEndpointState
 Forward reference of structure to create pointers later.
 
typedef struct AdapterEndpointStateAdapterEndpointHandle
 Forward reference of structure to create pointers later.
 
typedef struct CdiConnectionState CdiConnectionState
 Forward reference of structure to create pointers later.
 
typedef struct CdiEndpointState CdiEndpointState
 Forward reference of structure to create pointers later.
 
typedef struct EndpointManagerState EndpointManagerState
 Forward reference of structure to create pointers later.
 
typedef struct EndpointManagerStateEndpointManagerHandle
 Forward reference of structure to create pointers later.
 
typedef struct StatisticsState StatisticsState
 Forward reference of structure to create pointers later.
 
typedef struct StatisticsStateStatisticsHandle
 Forward reference of structure to create pointers later.
 
typedef struct CdiStatsCallbackState * CdiStatsCallbackHandle
 Forward reference of structure to create pointers later.
 
typedef struct ReceiveBufferState ReceiveBufferState
 Forward reference of structure to create pointers later.
 
typedef struct ReceiveBufferStateReceiveBufferHandle
 Forward reference of structure to create pointers later.
 
typedef struct TxPayloadState TxPayloadState
 Forward reference of structure to create pointers later.
 
typedef void(* CdiCallback) (const void *param_ptr)
 Generic type used to pass Tx/Rx callbacks to internal functions.
 
typedef struct CdiMemoryState CdiMemoryState
 Forward reference of structure to create pointers later.
 
typedef struct SdkLogState * SdkLogHandle
 Forward reference of structure to create pointers later.
 
typedef struct CdiReorderList CdiReorderList
 Forward reference of structure to create pointers later.
 

Enumerations

enum  ConnectionHandleType { kHandleTypeTx = 0x5a , kHandleTypeRx = 0xa5 }
 This enumeration is used in the CdiConnectionState and CdiEndpointState structures to indicate which of the two state structures is contained in the union. Unusual numbers were chosen to decrease the likelihood of a pointer to a random location in memory from being interpreted as a valid handle. More...
 
enum  CdiPayloadState {
  kPayloadIdle = 0 , kPayloadPacketZeroPending , kPayloadInProgress , kPayloadError ,
  kPayloadIgnore , kPayloadComplete
}
 Enumeration used to maintain payload state. More...
 
enum  CdiBackPressureState { kCdiBackPressureNone , kCdiBackPressureActive }
 This enumeration is used to indicate the current backpressure state of a connection. More...
 
enum  { kMagicAdapter = 0xacd95f67 , kMagicConnection = 0xf98b0b0d , kMagicEndpoint = 0x725c4e3a , kMagicMemory = 0xdcf693e4 }
 Random numbers to aid in detecting invalid handles.
 

Variables

CdiGlobalContext cdi_global_context
 The one global variable defined by the SDK containing all of its state information.
 

Detailed Description

This header file contains definitions of types and the one global variable used internally by the SDK's implementation. These are details that do not need to be exposed to the user programs via the API.

Typedef Documentation

◆ CdiCallback

typedef void(* CdiCallback) (const void *param_ptr)

Generic type used to pass Tx/Rx callbacks to internal functions.

Parameters
param_ptrto callback type specific data.

Enumeration Type Documentation

◆ CdiBackPressureState

This enumeration is used to indicate the current backpressure state of a connection.

Enumerator
kCdiBackPressureNone 

No back pressure. Connection is performing normally.

kCdiBackPressureActive 

Back pressure is currently active due to unable to allocate resources, so throwing away payloads.

◆ CdiPayloadState

Enumeration used to maintain payload state.

Enumerator
kPayloadIdle 

Payload state is not in use yet.

kPayloadPacketZeroPending 

Payload is waiting for packet 0.

kPayloadInProgress 

Payload is in progress.

kPayloadError 

Payload received an error and has not yet been sent; transition to Ignore when sent.

kPayloadIgnore 

Error payload has been sent and we now ignore packets for it.

kPayloadComplete 

Payload has completed but has not been sent; transition to Idle when sent.

◆ ConnectionHandleType

This enumeration is used in the CdiConnectionState and CdiEndpointState structures to indicate which of the two state structures is contained in the union. Unusual numbers were chosen to decrease the likelihood of a pointer to a random location in memory from being interpreted as a valid handle.

Enumerator
kHandleTypeTx 

Transmitter type handle.

kHandleTypeRx 

Receiver type handle.

Variable Documentation

◆ cdi_global_context

CdiGlobalContext cdi_global_context
extern

The one global variable defined by the SDK containing all of its state information.

The one global variable defined by the SDK containing all of its state information.