CTaps 0.3.0
A C implementation of the Transport Services API (RFC 9621 - 9623)
Loading...
Searching...
No Matches
ctaps.h File Reference
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <sys/socket.h>
Include dependency graph for ctaps.h:

Go to the source code of this file.

Data Structures

struct  ct_receive_callbacks_t
 Callback functions for receiving messages on a connection. More...
 
struct  ct_connection_callbacks_t
 Callback functions for connection lifecycle events. More...
 
struct  ct_listener_callbacks_t
 Callback functions for listener events. More...
 
struct  ct_framer_impl_t
 Opaque handle representing a framer layer, wrapping or unwrapping sent/received messages. More...
 

Macros

#define CT_EXTERN
 
#define CT_CONNECTION_DEFAULT_PRIORITY   100
 
#define EMPTY_PREFERENCE_SET_DEFAULT   {0}
 
#define RUNTIME_DEPENDENT_DEFAULT   0
 
#define get_selection_property_list(f)
 
#define get_preference_set_selection_property_list(f)
 
#define output_enum(enum_name, string_name, property_type, token_name, default_value, type)    enum_name,
 
#define CT_CONN_TIMEOUT_DISABLED   0
 0 Means no timeout in ms
 
#define CT_CONN_RATE_UNLIMITED   UINT64_MAX
 Special value: No rate limit.
 
#define CT_CONN_CHECKSUM_FULL_COVERAGE   UINT32_MAX
 Special value: Full checksum.
 
#define CT_CONN_MSG_MAX_LEN_NOT_APPLICABLE   0
 Special value: No max message length.
 
#define get_writable_connection_property_list(f)
 
#define get_read_only_connection_properties(f)
 
#define get_tcp_connection_properties(f)
 
#define output_transport_property_getter_declaration(enum_name, string_name, property_type, token_name, default_value, type_enum)
 
#define output_transport_property_preference_getter_declaration( enum_name, string_name, property_type, token_name, default_value, type)
 
#define output_transport_property_setter_declaration(enum_name, string_name, property_type, token_name, default_value, type_enum)
 
#define output_transport_property_preference_set_adder(enum_name, string_name, property_type, token_name, default_value, type)
 
#define CT_MESSAGE_CHECKSUM_FULL_COVERAGE   UINT32_MAX
 Special value: Full checksum coverage for individual message.
 
#define get_message_property_list(f)
 
#define output_message_property_getter_declaration(enum_name, string_name, property_type, token_name, default_value, type_enum)
 
#define output_message_property_setter_declaration(enum_name, string_name, property_type, token_name, default_value, type_enum)
 
#define output_message_context_getter_declaration(enum_name, string_name, property_type, token_name, default_value, type_enum)
 
#define output_message_context_setter_declaration(enum_name, string_name, property_type, token_name, default_value, type_enum)
 

Typedefs

typedef struct ct_connection_s ct_connection_t
 
typedef struct ct_listener_s ct_listener_t
 
typedef struct ct_transport_properties_s ct_transport_properties_t
 
typedef struct ct_message_properties_s ct_message_properties_t
 
typedef struct ct_security_parameters_s ct_security_parameters_t
 
typedef struct ct_local_endpoint_s ct_local_endpoint_t
 
typedef struct ct_remote_endpoint_s ct_remote_endpoint_t
 
typedef struct ct_message_s ct_message_t
 
typedef struct ct_message_context_s ct_message_context_t
 
typedef int(* ct_framer_done_encoding_callback) (ct_connection_t *connection, ct_message_t *encoded_message, ct_message_context_t *context)
 Callback invoked by framer when message encoding is complete.
 
typedef void(* ct_framer_done_decoding_callback) (ct_connection_t *connection, ct_message_t *decoded_message, ct_message_context_t *context)
 Callback invoked by framer when message decoding is complete.
 
typedef struct ct_preconnection_s ct_preconnection_t
 

Enumerations

enum  ct_log_level_enum_t {
  CT_LOG_TRACE = 0 , CT_LOG_DEBUG = 1 , CT_LOG_INFO = 2 , CT_LOG_WARN = 3 ,
  CT_LOG_ERROR = 4
}
 Log level enumeration for filtering log output. More...
 
enum  ct_selection_preference_enum_t {
  PROHIBIT = -2 , AVOID , NO_PREFERENCE , PREFER ,
  REQUIRE
}
 Preference levels for transport selection properties. More...
 
enum  ct_direction_of_communication_enum_t { CT_DIRECTION_BIDIRECTIONAL , CT_DIRECTION_UNIDIRECTIONAL_SEND , CT_DIRECTION_UNIDIRECTIONAL_RECV }
 Direction of communication for a connection. More...
 
enum  ct_multipath_enum_t { CT_MULTIPATH_DISABLED , CT_MULTIPATH_ACTIVE , CT_MULTIPATH_PASSIVE }
 Multipath transport modes. More...
 
enum  ct_connection_state_enum_t {
  CT_CONN_STATE_INVALID = -1 , CT_CONN_STATE_ESTABLISHING , CT_CONN_STATE_ESTABLISHED , CT_CONN_STATE_CLOSING ,
  CT_CONN_STATE_CLOSED
}
 Connection lifecycle states. More...
 
enum  ct_connection_scheduler_enum_t { CT_CONN_SCHEDULER_WEIGHTED_FAIR_QUEUEING = 0 }
 Connection scheduling algorithms for multipath. More...
 
enum  ct_capacity_profile_enum_t {
  CT_CAPACITY_PROFILE_BEST_EFFORT = 0 , CT_CAPACITY_PROFILE_SCAVENGER , CT_CAPACITY_PROFILE_LOW_LATENCY_INTERACTIVE , CT_CAPACITY_PROFILE_LOW_LATENCY_NON_INTERACTIVE ,
  CT_CAPACITY_PROFILE_CONSTANT_RATE_STREAMING , CT_CAPACITY_PROFILE_CAPACITY_SEEKING
}
 QoS capacity profiles for traffic classification. More...
 
enum  ct_multipath_policy_enum_t { CT_MULTIPATH_POLICY_HANDOVER = 0 , CT_MULTIPATH_POLICY_INTERACTIVE , CT_MULTIPATH_POLICY_AGGREGATE }
 Policies for multipath traffic distribution. More...
 
enum  ct_protocol_enum_t { CT_PROTOCOL_ERROR = -1 , CT_PROTOCOL_TCP , CT_PROTOCOL_UDP , CT_PROTOCOL_QUIC }
 Enumeration of currently supported transport protocols. More...
 

Functions

bool ct_listener_is_closed (const ct_listener_t *listener)
 Check if a listener is closed.
 
void * ct_listener_get_callback_context (const ct_listener_t *listener)
 Get the callback context associated with a listener.
 
void ct_listener_close (ct_listener_t *listener)
 Close a listener and stop accepting new connections.
 
void ct_listener_free (ct_listener_t *listener)
 Free resources in a listener.
 
int ct_initialize (void)
 Initialize the CTaps library.
 
int ct_start_event_loop (void)
 Start the CTaps event loop (blocking operation).
 
int ct_close (void)
 Close and cleanup the CTaps library.
 
void ct_set_log_level (ct_log_level_enum_t level)
 Set the minimum logging level for CTaps.
 
int ct_add_log_file (const char *file_path, ct_log_level_enum_t min_level)
 Add a file output destination for CTaps logs.
 
ct_selection_preference_enum_t ct_transport_properties_get_reliability (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_preserve_msg_boundaries (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_per_msg_reliability (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_preserve_order (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_zero_rtt_msg (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_multistreaming (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_full_checksum_send (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_full_checksum_recv (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_congestion_control (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_keep_alive (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_use_temporary_local_address (const ct_transport_properties_t *transport_props)
 
ct_multipath_enum_t ct_transport_properties_get_multipath (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_advertises_alt_address (const ct_transport_properties_t *transport_props)
 
ct_direction_of_communication_enum_t ct_transport_properties_get_direction (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_soft_error_notify (const ct_transport_properties_t *transport_props)
 
ct_selection_preference_enum_t ct_transport_properties_get_active_read_before_send (const ct_transport_properties_t *transport_props)
 
void ct_transport_properties_set_reliability (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_preserve_msg_boundaries (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_per_msg_reliability (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_preserve_order (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_zero_rtt_msg (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_multistreaming (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_full_checksum_send (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_full_checksum_recv (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_congestion_control (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_keep_alive (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_use_temporary_local_address (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_multipath (ct_transport_properties_t *transport_props, ct_multipath_enum_t val)
 
void ct_transport_properties_set_advertises_alt_address (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_direction (ct_transport_properties_t *transport_props, ct_direction_of_communication_enum_t val)
 
void ct_transport_properties_set_soft_error_notify (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
void ct_transport_properties_set_active_read_before_send (ct_transport_properties_t *transport_props, ct_selection_preference_enum_t val)
 
ct_selection_preference_enum_t ct_transport_properties_get_interface_preference (const ct_transport_properties_t *transport_props, const char *value)
 
ct_selection_preference_enum_t ct_transport_properties_get_pvd_preference (const ct_transport_properties_t *transport_props, const char *value)
 
int ct_transport_properties_add_interface_preference (ct_transport_properties_t *transport_props, const char *value, ct_selection_preference_enum_t preference)
 
int ct_transport_properties_add_pvd_preference (ct_transport_properties_t *transport_props, const char *value, ct_selection_preference_enum_t preference)
 
uint32_t ct_transport_properties_get_recv_checksum_len (const ct_transport_properties_t *transport_props)
 
uint8_t ct_transport_properties_get_conn_priority (const ct_transport_properties_t *transport_props)
 
uint32_t ct_transport_properties_get_conn_timeout_ms (const ct_transport_properties_t *transport_props)
 
uint32_t ct_transport_properties_get_keep_alive_timeout (const ct_transport_properties_t *transport_props)
 
ct_connection_scheduler_enum_t ct_transport_properties_get_conn_scheduler (const ct_transport_properties_t *transport_props)
 
ct_capacity_profile_enum_t ct_transport_properties_get_conn_capacity_profile (const ct_transport_properties_t *transport_props)
 
ct_multipath_policy_enum_t ct_transport_properties_get_multipath_policy (const ct_transport_properties_t *transport_props)
 
uint64_t ct_transport_properties_get_min_send_rate (const ct_transport_properties_t *transport_props)
 
uint64_t ct_transport_properties_get_min_recv_rate (const ct_transport_properties_t *transport_props)
 
uint64_t ct_transport_properties_get_max_send_rate (const ct_transport_properties_t *transport_props)
 
uint64_t ct_transport_properties_get_max_recv_rate (const ct_transport_properties_t *transport_props)
 
uint64_t ct_transport_properties_get_group_conn_limit (const ct_transport_properties_t *transport_props)
 
bool ct_transport_properties_get_isolate_session (const ct_transport_properties_t *transport_props)
 
void ct_transport_properties_set_recv_checksum_len (ct_transport_properties_t *transport_props, uint32_t val)
 
void ct_transport_properties_set_conn_priority (ct_transport_properties_t *transport_props, uint8_t val)
 
void ct_transport_properties_set_conn_timeout_ms (ct_transport_properties_t *transport_props, uint32_t val)
 
void ct_transport_properties_set_keep_alive_timeout (ct_transport_properties_t *transport_props, uint32_t val)
 
void ct_transport_properties_set_conn_scheduler (ct_transport_properties_t *transport_props, ct_connection_scheduler_enum_t val)
 
void ct_transport_properties_set_conn_capacity_profile (ct_transport_properties_t *transport_props, ct_capacity_profile_enum_t val)
 
void ct_transport_properties_set_multipath_policy (ct_transport_properties_t *transport_props, ct_multipath_policy_enum_t val)
 
void ct_transport_properties_set_min_send_rate (ct_transport_properties_t *transport_props, uint64_t val)
 
void ct_transport_properties_set_min_recv_rate (ct_transport_properties_t *transport_props, uint64_t val)
 
void ct_transport_properties_set_max_send_rate (ct_transport_properties_t *transport_props, uint64_t val)
 
void ct_transport_properties_set_max_recv_rate (ct_transport_properties_t *transport_props, uint64_t val)
 
void ct_transport_properties_set_group_conn_limit (ct_transport_properties_t *transport_props, uint64_t val)
 
void ct_transport_properties_set_isolate_session (ct_transport_properties_t *transport_props, bool val)
 
uint32_t ct_transport_properties_get_user_timeout_value_ms (const ct_transport_properties_t *transport_props)
 
bool ct_transport_properties_get_user_timeout_enabled (const ct_transport_properties_t *transport_props)
 
bool ct_transport_properties_get_user_timeout_changeable (const ct_transport_properties_t *transport_props)
 
void ct_transport_properties_set_user_timeout_value_ms (ct_transport_properties_t *transport_props, uint32_t val)
 
void ct_transport_properties_set_user_timeout_enabled (ct_transport_properties_t *transport_props, bool val)
 
void ct_transport_properties_set_user_timeout_changeable (ct_transport_properties_t *transport_props, bool val)
 
uint64_t ct_transport_properties_get_singular_transmission_msg_max_len (const ct_transport_properties_t *transport_props)
 
uint64_t ct_transport_properties_get_send_message_max_len (const ct_transport_properties_t *transport_props)
 
uint64_t ct_transport_properties_get_recv_message_max_len (const ct_transport_properties_t *transport_props)
 
uint64_t ct_message_properties_get_lifetime (const ct_message_properties_t *msg_props)
 
uint32_t ct_message_properties_get_priority (const ct_message_properties_t *msg_props)
 
bool ct_message_properties_get_ordered (const ct_message_properties_t *msg_props)
 
bool ct_message_properties_get_safely_replayable (const ct_message_properties_t *msg_props)
 
bool ct_message_properties_get_final (const ct_message_properties_t *msg_props)
 
uint32_t ct_message_properties_get_checksum_len (const ct_message_properties_t *msg_props)
 
bool ct_message_properties_get_reliable (const ct_message_properties_t *msg_props)
 
ct_capacity_profile_enum_t ct_message_properties_get_capacity_profile (const ct_message_properties_t *msg_props)
 
bool ct_message_properties_get_no_fragmentation (const ct_message_properties_t *msg_props)
 
bool ct_message_properties_get_no_segmentation (const ct_message_properties_t *msg_props)
 
void ct_message_properties_set_lifetime (ct_message_properties_t *msg_props, uint64_t val)
 
void ct_message_properties_set_priority (ct_message_properties_t *msg_props, uint32_t val)
 
void ct_message_properties_set_ordered (ct_message_properties_t *msg_props, bool val)
 
void ct_message_properties_set_safely_replayable (ct_message_properties_t *msg_props, bool val)
 
void ct_message_properties_set_final (ct_message_properties_t *msg_props, bool val)
 
void ct_message_properties_set_checksum_len (ct_message_properties_t *msg_props, uint32_t val)
 
void ct_message_properties_set_reliable (ct_message_properties_t *msg_props, bool val)
 
void ct_message_properties_set_capacity_profile (ct_message_properties_t *msg_props, ct_capacity_profile_enum_t val)
 
void ct_message_properties_set_no_fragmentation (ct_message_properties_t *msg_props, bool val)
 
void ct_message_properties_set_no_segmentation (ct_message_properties_t *msg_props, bool val)
 
ct_message_properties_tct_message_properties_new (void)
 Create a new message properties object with default values.
 
void ct_message_properties_free (ct_message_properties_t *message_properties)
 Free resources in message properties.
 
int ct_security_parameters_set_ticket_store_path (ct_security_parameters_t *sec, const char *ticket_store_path)
 Set the path to the ticket store for QUIC session resumption.
 
int ct_security_parameters_set_server_name_identification (ct_security_parameters_t *sec, const char *sni)
 Set the server name identification (SNI) for TLS connections.
 
int ct_security_parameters_add_server_certificate (ct_security_parameters_t *sec, const char *cert_file, const char *key_file)
 Add a server certificate and private key for TLS connections.
 
int ct_security_parameters_add_client_certificate (ct_security_parameters_t *sec, const char *cert_file, const char *key_file)
 Add a client certificate and private key for TLS connections.
 
int ct_security_parameters_add_alpn (ct_security_parameters_t *sec, const char *alpn)
 Add an ALPN protocol identifier to the list of supported ALPNs for TLS connections.
 
int ct_security_parameters_clear_alpn (ct_security_parameters_t *sec)
 Free and clear all configured ALPN protocol identifiers from the security parameters.
 
int ct_security_parameters_set_session_ticket_encryption_key (ct_security_parameters_t *sec, const uint8_t *key, size_t key_len)
 Set the session ticket encryption key for QUIC session resumption.
 
ct_security_parameters_tct_security_parameters_new (void)
 Allocate a new security parameters object on the heap.
 
void ct_security_parameters_free (ct_security_parameters_t *security_parameters)
 Free resources in security parameters including the structure itself.
 
const char * ct_security_parameters_get_ticket_store_path (const ct_security_parameters_t *sec)
 
const char * ct_security_parameters_get_server_name_identification (const ct_security_parameters_t *sec)
 
size_t ct_security_parameters_get_server_certificate_count (const ct_security_parameters_t *sec)
 
const char * ct_security_parameters_get_server_certificate_file (const ct_security_parameters_t *sec, size_t index)
 
const char * ct_security_parameters_get_server_certificate_key_file (const ct_security_parameters_t *sec, size_t index)
 
size_t ct_security_parameters_get_client_certificate_count (const ct_security_parameters_t *sec)
 
const char * ct_security_parameters_get_client_certificate_file (const ct_security_parameters_t *sec, size_t index)
 
const char * ct_security_parameters_get_client_certificate_key_file (const ct_security_parameters_t *sec, size_t index)
 
const char *const * ct_security_parameters_get_alpns (const ct_security_parameters_t *sec, size_t *num_alpns)
 Get the configured ALPN protocol identifiers.
 
const uint8_t * ct_security_parameters_get_session_ticket_encryption_key (const ct_security_parameters_t *sec, size_t *key_len)
 Get the session ticket encryption key.
 
ct_transport_properties_tct_transport_properties_new (void)
 Create a new transport properties object with default values.
 
void ct_transport_properties_free (ct_transport_properties_t *props)
 Free a transport properties object.
 
ct_local_endpoint_tct_local_endpoint_new (void)
 Create a new heap-allocated local endpoint.
 
int ct_local_endpoint_with_interface (ct_local_endpoint_t *local_endpoint, const char *interface_name)
 Set the network interface for a local endpoint.
 
void ct_local_endpoint_with_port (ct_local_endpoint_t *local_endpoint, uint16_t port)
 Set the port number for a local endpoint.
 
int ct_local_endpoint_with_service (ct_local_endpoint_t *local_endpoint, const char *service)
 Set the service name for a local endpoint.
 
int ct_local_endpoint_with_ipv4 (ct_local_endpoint_t *local_endpoint, in_addr_t ipv4_addr)
 Set the IPv4 address for a local endpoint.
 
int ct_local_endpoint_with_ipv6 (ct_local_endpoint_t *local_endpoint, struct in6_addr ipv6_addr)
 Set the IPv6 address for a local endpoint.
 
int ct_local_endpoint_from_sockaddr (ct_local_endpoint_t *local_endpoint, const struct sockaddr_storage *addr)
 Initialize a local endpoint from a sockaddr structure.
 
void ct_local_endpoint_free (ct_local_endpoint_t *local_endpoint)
 Free all resources in a local endpoint including the structure itself.
 
ct_local_endpoint_tct_local_endpoint_deep_copy (const ct_local_endpoint_t *local_endpoint)
 Create a heap-allocated copy of a local endpoint.
 
const char * ct_local_endpoint_get_service (const ct_local_endpoint_t *local_endpoint)
 Get the service for a local endpoint.
 
uint16_t ct_local_endpoint_get_resolved_port (const ct_local_endpoint_t *local_endpoint)
 Get the resolved port for a local endpoint after binding.
 
ct_remote_endpoint_tct_remote_endpoint_new (void)
 Create a new heap-allocated remote endpoint.
 
int ct_remote_endpoint_with_hostname (ct_remote_endpoint_t *remote_endpoint, const char *hostname)
 Set the hostname for a remote endpoint.
 
void ct_remote_endpoint_with_port (ct_remote_endpoint_t *remote_endpoint, uint16_t port)
 Set the port number for a remote endpoint.
 
int ct_remote_endpoint_with_service (ct_remote_endpoint_t *remote_endpoint, const char *service)
 Set the service name for a remote endpoint.
 
void ct_remote_endpoint_free (ct_remote_endpoint_t *remote_endpoint)
 Free all resources in a remote endpoint including the structure itself.
 
int ct_remote_endpoint_from_sockaddr (ct_remote_endpoint_t *remote_endpoint, const struct sockaddr_storage *addr)
 Initialize a remote endpoint from a sockaddr structure.
 
ct_remote_endpoint_tct_remote_endpoint_deep_copy (const ct_remote_endpoint_t *remote_endpoint)
 Create a heap-allocated copy of a remote endpoint.
 
int ct_remote_endpoint_with_ipv4 (ct_remote_endpoint_t *remote_endpoint, in_addr_t ipv4_addr)
 Set the IPv4 address for a remote endpoint.
 
int ct_remote_endpoint_with_ipv6 (ct_remote_endpoint_t *remote_endpoint, struct in6_addr ipv6_addr)
 Set the IPv6 address for a remote endpoint.
 
const char * ct_remote_endpoint_get_service (const ct_remote_endpoint_t *remote_endpoint)
 Get the service for a remote endpoint.
 
void ct_message_free (ct_message_t *message)
 Free all resources in a message including the structure.
 
ct_message_tct_message_new (void)
 Allocate a new message on the heap.
 
ct_message_tct_message_new_with_content (const char *content, size_t length)
 Allocate a new message with content.
 
size_t ct_message_get_length (const ct_message_t *message)
 Get the length of a message.
 
ct_message_tct_message_deep_copy (const ct_message_t *message)
 Create a deep copy of a message, including its content.
 
const char * ct_message_get_content (const ct_message_t *message)
 Get the content buffer of a message.
 
void ct_message_set_content (ct_message_t *message, const void *content, size_t length)
 Set the content of a message, replacing any existing content.
 
ct_message_context_tct_message_context_new (void)
 Initialize a message context with default values.
 
void ct_message_context_free (ct_message_context_t *message_context)
 Free resources in a message context.
 
const ct_message_properties_tct_message_context_get_message_properties (const ct_message_context_t *message_context)
 Get message properties from a message context.
 
const ct_remote_endpoint_tct_message_context_get_remote_endpoint (const ct_message_context_t *message_context)
 Get the remote endpoint from a message context.
 
const ct_local_endpoint_tct_message_context_get_local_endpoint (const ct_message_context_t *message_context)
 Get the local endpoint from a message context.
 
void * ct_message_context_get_receive_context (const ct_message_context_t *message_context)
 Get the receive context from a message context.
 
uint64_t ct_message_context_get_lifetime (const ct_message_context_t *msg_ctx)
 
uint32_t ct_message_context_get_priority (const ct_message_context_t *msg_ctx)
 
bool ct_message_context_get_ordered (const ct_message_context_t *msg_ctx)
 
bool ct_message_context_get_safely_replayable (const ct_message_context_t *msg_ctx)
 
bool ct_message_context_get_final (const ct_message_context_t *msg_ctx)
 
uint32_t ct_message_context_get_checksum_len (const ct_message_context_t *msg_ctx)
 
bool ct_message_context_get_reliable (const ct_message_context_t *msg_ctx)
 
ct_capacity_profile_enum_t ct_message_context_get_capacity_profile (const ct_message_context_t *msg_ctx)
 
bool ct_message_context_get_no_fragmentation (const ct_message_context_t *msg_ctx)
 
bool ct_message_context_get_no_segmentation (const ct_message_context_t *msg_ctx)
 
void ct_message_context_set_lifetime (ct_message_context_t *msg_ctx, uint64_t val)
 
void ct_message_context_set_priority (ct_message_context_t *msg_ctx, uint32_t val)
 
void ct_message_context_set_ordered (ct_message_context_t *msg_ctx, bool val)
 
void ct_message_context_set_safely_replayable (ct_message_context_t *msg_ctx, bool val)
 
void ct_message_context_set_final (ct_message_context_t *msg_ctx, bool val)
 
void ct_message_context_set_checksum_len (ct_message_context_t *msg_ctx, uint32_t val)
 
void ct_message_context_set_reliable (ct_message_context_t *msg_ctx, bool val)
 
void ct_message_context_set_capacity_profile (ct_message_context_t *msg_ctx, ct_capacity_profile_enum_t val)
 
void ct_message_context_set_no_fragmentation (ct_message_context_t *msg_ctx, bool val)
 
void ct_message_context_set_no_segmentation (ct_message_context_t *msg_ctx, bool val)
 
ct_preconnection_tct_preconnection_new (const ct_local_endpoint_t *const *local_endpoints, size_t num_local_endpoints, const ct_remote_endpoint_t *const *remote_endpoints, size_t num_remote_endpoints, const ct_transport_properties_t *transport_properties, const ct_security_parameters_t *security_parameters)
 Create a new preconnection with transport properties and endpoints.
 
void ct_preconnection_free (ct_preconnection_t *preconnection)
 Free a preconnection object.
 
int ct_preconnection_set_framer (ct_preconnection_t *preconnection, const ct_framer_impl_t *framer_impl)
 Set a message framer for the preconnection.
 
int ct_preconnection_initiate (const ct_preconnection_t *preconnection, const ct_connection_callbacks_t *connection_callbacks)
 Initiate a connection.
 
int ct_preconnection_initiate_with_send (const ct_preconnection_t *preconnection, const ct_connection_callbacks_t *connection_callbacks, const ct_message_t *message, const ct_message_context_t *message_context)
 Initiate a connection and send a message immediately upon establishment.
 
int ct_preconnection_listen (const ct_preconnection_t *preconnection, const ct_listener_callbacks_t *listener_callbacks, const ct_connection_callbacks_t *connection_callbacks)
 Start listening for incoming connections using the configured Preconnection.
 
int ct_send_message (ct_connection_t *connection, const ct_message_t *message)
 Send a message over a connection with default properties.
 
int ct_send_message_full (ct_connection_t *connection, const ct_message_t *message, const ct_message_context_t *message_context)
 Send a message with custom message context and properties.
 
int ct_receive_message (ct_connection_t *connection, const ct_receive_callbacks_t *receive_callbacks)
 Register callbacks to receive messages on a connection.
 
const ct_transport_properties_tct_connection_get_transport_properties (const ct_connection_t *connection)
 Get shared connection properties for a connection.
 
uint8_t ct_connection_get_priority (const ct_connection_t *connection)
 Get relative priority when compared to other connections in the same group.
 
int ct_connection_set_priority (ct_connection_t *connection, uint8_t priority)
 Set relative priority for a connection compared to other connections in the same group.
 
void * ct_connection_get_callback_context (const ct_connection_t *connection)
 Get the connection's callback context.
 
const char * ct_connection_get_uuid (const ct_connection_t *connection)
 Get the UUID of a connection.
 
const char * ct_connection_get_protocol_name (const ct_connection_t *connection)
 Get the name of the underlying protocol.
 
const ct_remote_endpoint_tct_connection_get_active_remote_endpoint (const ct_connection_t *connection)
 Get the currently active remote endpoint for the connection.
 
const ct_local_endpoint_tct_connection_get_active_local_endpoint (const ct_connection_t *connection)
 Get the currently active local endpoint.
 
ct_connection_state_enum_t ct_connection_get_state (const ct_connection_t *connection)
 Get the current state of a connection.
 
bool ct_connection_is_closed (const ct_connection_t *connection)
 Check if a connection's state is CT_CONN_STATE_CLOSED.
 
bool ct_connection_is_established (const ct_connection_t *connection)
 Check if a connection's state is CT_CONN_STATE_ESTABLISHED.
 
bool ct_connection_is_establishing (const ct_connection_t *connection)
 Check if a connection's state is CT_CONN_STATE_ESTABLISHING.
 
bool ct_connection_is_closing (const ct_connection_t *connection)
 Check if a connection's state is CT_CONN_STATE_CLOSING.
 
bool ct_connection_is_closed_or_closing (const ct_connection_t *connection)
 Check if a connection's state is CT_CONN_STATE_CLOSED or CT_CONN_STATE_CLOSING.
 
bool ct_connection_is_client (const ct_connection_t *connection)
 Check if a connection is a client connection.
 
bool ct_connection_is_server (const ct_connection_t *connection)
 Check if a connection is a server connection.
 
bool ct_connection_can_send (const ct_connection_t *connection)
 Check the value of the canSend connection property.
 
bool ct_connection_can_receive (const ct_connection_t *connection)
 Check the value of the canReceive connection property.
 
void ct_connection_free (ct_connection_t *connection)
 Free resources in a connection.
 
void ct_connection_close (ct_connection_t *connection)
 Close a connection gracefully.
 
void ct_connection_abort (ct_connection_t *connection)
 Forcefully abort a connection without graceful shutdown.
 
int ct_connection_clone_full (const ct_connection_t *source_connection, const ct_framer_impl_t *framer, const ct_transport_properties_t *connection_properties)
 Clone a connection to create a new connection in the same connection group.
 
int ct_connection_clone (ct_connection_t *source_connection)
 Clone a connection with only mandatory parameters.
 
size_t ct_connection_get_total_num_grouped_connections (const ct_connection_t *connection)
 Get the total number of connections in a connection group (including closed ones).
 
size_t ct_connection_get_num_open_grouped_connections (const ct_connection_t *connection)
 Get the number of open connections in a connection group.
 
void ct_connection_close_group (ct_connection_t *connection)
 Close all connections in the same connection group gracefully.
 
void ct_connection_abort_group (ct_connection_t *connection)
 Forcefully abort all connections in the same connection group.
 
ct_protocol_enum_t ct_connection_get_transport_protocol (const ct_connection_t *connection)
 Get the transport protocol used by a connection.
 
bool ct_connection_sent_early_data (const ct_connection_t *connection)
 Check if a connection has sent early data (e.g., 0-RTT).
 

Macro Definition Documentation

◆ CT_CONNECTION_DEFAULT_PRIORITY

#define CT_CONNECTION_DEFAULT_PRIORITY   100

Definition at line 22 of file ctaps.h.

◆ CT_EXTERN

#define CT_EXTERN

Definition at line 19 of file ctaps.h.

◆ EMPTY_PREFERENCE_SET_DEFAULT

#define EMPTY_PREFERENCE_SET_DEFAULT   {0}

Definition at line 218 of file ctaps.h.

◆ get_message_property_list

#define get_message_property_list (   f)
Value:
f(MSG_LIFETIME, "msgLifetime", uint64_t, lifetime, 0, TYPE_UINT64) \
f(MSG_PRIORITY, "msgPriority", uint32_t, priority, 100, TYPE_UINT32) \
f(MSG_ORDERED, "msgOrdered", bool, ordered, true, TYPE_BOOL) \
f(MSG_SAFELY_REPLAYABLE, "msgSafelyReplayable", bool, safely_replayable, false, TYPE_BOOL) \
f(FINAL, "final", bool, final, false, TYPE_BOOL) \
f(MSG_CHECKSUM_LEN, "msgChecksumLen", uint32_t, checksum_len, CT_MESSAGE_CHECKSUM_FULL_COVERAGE, TYPE_UINT32) \
f(MSG_RELIABLE, "msgReliable", bool, reliable, true, TYPE_BOOL) \
f(MSG_CAPACITY_PROFILE, "msgCapacityProfile", ct_capacity_profile_enum_t, capacity_profile, CT_CAPACITY_PROFILE_BEST_EFFORT, TYPE_ENUM) \
f(NO_FRAGMENTATION, "noFragmentation", bool, no_fragmentation, false, TYPE_BOOL) \
f(NO_SEGMENTATION, "noSegmentation", bool, no_segmentation, false, TYPE_BOOL)
ct_capacity_profile_enum_t
QoS capacity profiles for traffic classification.
Definition ctaps.h:299
@ CT_CAPACITY_PROFILE_BEST_EFFORT
Default best-effort traffic.
Definition ctaps.h:300
#define CT_MESSAGE_CHECKSUM_FULL_COVERAGE
Special value: Full checksum coverage for individual message.
Definition ctaps.h:436

Definition at line 439 of file ctaps.h.

◆ get_preference_set_selection_property_list

#define get_preference_set_selection_property_list (   f)
Value:
f(INTERFACE, "interface", ct_preference_set_t, interface, EMPTY_PREFERENCE_SET_DEFAULT, \
TYPE_PREFERENCE_SET) \
f(PVD, "pvd", ct_preference_set_t, pvd, EMPTY_PREFERENCE_SET_DEFAULT, TYPE_PREFERENCE_SET)
#define EMPTY_PREFERENCE_SET_DEFAULT
Definition ctaps.h:218

Definition at line 240 of file ctaps.h.

◆ get_read_only_connection_properties

#define get_read_only_connection_properties (   f)
Value:
f(SINGULAR_TRANSMISSION_MSG_MAX_LEN, "singularTransmissionMsgMaxLen", uint64_t, singular_transmission_msg_max_len, 0, TYPE_UINT64) \
f(SEND_MESSAGE_MAX_LEN, "sendMsgMaxLen", uint64_t, send_message_max_len, 0, TYPE_UINT64) \
f(RECV_MESSAGE_MAX_LEN, "recvMessageMaxLen", uint64_t, recv_message_max_len, 0, TYPE_UINT64)

Definition at line 334 of file ctaps.h.

◆ get_selection_property_list

#define get_selection_property_list (   f)
Value:
f(RELIABILITY, "reliability", ct_selection_preference_enum_t, reliability, REQUIRE, TYPE_PREFERENCE) \
f(PRESERVE_MSG_BOUNDARIES, "preserveMsgBoundaries", ct_selection_preference_enum_t, preserve_msg_boundaries, NO_PREFERENCE, TYPE_PREFERENCE ) \
f(PER_MSG_RELIABILITY, "perMsgReliability", ct_selection_preference_enum_t, per_msg_reliability, NO_PREFERENCE, TYPE_PREFERENCE) \
f(PRESERVE_ORDER, "preserveOrder", ct_selection_preference_enum_t, preserve_order, REQUIRE, TYPE_PREFERENCE) \
f(ZERO_RTT_MSG, "zeroRttMsg", ct_selection_preference_enum_t, zero_rtt_msg, NO_PREFERENCE, TYPE_PREFERENCE) \
f(MULTISTREAMING, "multistreaming", ct_selection_preference_enum_t, multistreaming, PREFER, TYPE_PREFERENCE) \
f(FULL_CHECKSUM_SEND, "fullChecksumSend", ct_selection_preference_enum_t, full_checksum_send, REQUIRE, TYPE_PREFERENCE) \
f(FULL_CHECKSUM_RECV, "fullChecksumRecv", ct_selection_preference_enum_t, full_checksum_recv, REQUIRE, TYPE_PREFERENCE) \
f(CONGESTION_CONTROL, "congestionControl", ct_selection_preference_enum_t, congestion_control, REQUIRE, TYPE_PREFERENCE) \
f(KEEP_ALIVE, "keepAlive", ct_selection_preference_enum_t, keep_alive, NO_PREFERENCE, TYPE_PREFERENCE) \
f(USE_TEMPORARY_LOCAL_ADDRESS, "useTemporaryLocalAddress", ct_selection_preference_enum_t, use_temporary_local_address, RUNTIME_DEPENDENT_DEFAULT, TYPE_PREFERENCE) \
f(MULTIPATH, "multipath", ct_multipath_enum_t, multipath, RUNTIME_DEPENDENT_DEFAULT, TYPE_ENUM) \
f(ADVERTISES_ALT_ADDRESS, "advertisesAltAddr", ct_selection_preference_enum_t, advertises_alt_address, PROHIBIT, TYPE_PREFERENCE) \
f(DIRECTION, "direction", ct_direction_of_communication_enum_t, direction, CT_DIRECTION_BIDIRECTIONAL, TYPE_ENUM) \
f(SOFT_ERROR_NOTIFY, "softErrorNotify", ct_selection_preference_enum_t, soft_error_notify, NO_PREFERENCE, TYPE_PREFERENCE) \
f(ACTIVE_READ_BEFORE_SEND, "activeReadBeforeSend", ct_selection_preference_enum_t, active_read_before_send, NO_PREFERENCE, TYPE_PREFERENCE)
#define RUNTIME_DEPENDENT_DEFAULT
Definition ctaps.h:219
ct_selection_preference_enum_t
Preference levels for transport selection properties.
Definition ctaps.h:188
ct_multipath_enum_t
Multipath transport modes.
Definition ctaps.h:211
ct_direction_of_communication_enum_t
Direction of communication for a connection.
Definition ctaps.h:201
@ REQUIRE
Protocol MUST have this property (eliminates candidates)
Definition ctaps.h:193
@ NO_PREFERENCE
No preference - property does not affect selection.
Definition ctaps.h:191
@ PREFER
Prefer protocols with this property if available.
Definition ctaps.h:192
@ PROHIBIT
Protocol MUST NOT have this property (eliminates candidates)
Definition ctaps.h:189
@ CT_DIRECTION_BIDIRECTIONAL
Two-way communication (send and receive)
Definition ctaps.h:202

Definition at line 222 of file ctaps.h.

◆ get_tcp_connection_properties

#define get_tcp_connection_properties (   f)
Value:
f(USER_TIMEOUT_VALUE_MS, "userTimeoutValueMs", uint32_t, user_timeout_value_ms, TCP_USER_TIMEOUT, TYPE_UINT32) \
f(USER_TIMEOUT_ENABLED, "userTimeoutEnabled", bool, user_timeout_enabled, false, TYPE_BOOL) \
f(USER_TIMEOUT_CHANGEABLE, "userTimeoutChangeable", bool, user_timeout_changeable, true, TYPE_BOOL)

Definition at line 339 of file ctaps.h.

◆ get_writable_connection_property_list

#define get_writable_connection_property_list (   f)
Value:
f(RECV_CHECKSUM_LEN, "recvChecksumLen", uint32_t, recv_checksum_len, CT_CONN_CHECKSUM_FULL_COVERAGE, TYPE_UINT32) \
f(CONN_PRIORITY, "connPriority", uint8_t, conn_priority, CT_CONNECTION_DEFAULT_PRIORITY, TYPE_UINT8) \
f(CONN_TIMEOUT, "connTimeout", uint32_t, conn_timeout_ms, CT_CONN_TIMEOUT_DISABLED, TYPE_UINT32) \
f(KEEP_ALIVE_TIMEOUT, "keepAliveTimeout", uint32_t, keep_alive_timeout, CT_CONN_TIMEOUT_DISABLED, TYPE_UINT32) \
f(CONN_SCHEDULER, "connScheduler", ct_connection_scheduler_enum_t, conn_scheduler, CT_CONN_SCHEDULER_WEIGHTED_FAIR_QUEUEING, TYPE_ENUM) \
f(CONN_CAPACITY_PROFILE, "connCapacityProfile", ct_capacity_profile_enum_t, conn_capacity_profile, CT_CAPACITY_PROFILE_BEST_EFFORT, TYPE_ENUM) \
f(MULTIPATH_POLICY, "multipathPolicy", ct_multipath_policy_enum_t, multipath_policy, CT_MULTIPATH_POLICY_HANDOVER, TYPE_ENUM) \
f(MIN_SEND_RATE, "minSendRate", uint64_t, min_send_rate, CT_CONN_RATE_UNLIMITED, TYPE_UINT64) \
f(MIN_RECV_RATE, "minRecvRate", uint64_t, min_recv_rate, CT_CONN_RATE_UNLIMITED, TYPE_UINT64) \
f(MAX_SEND_RATE, "maxSendRate", uint64_t, max_send_rate, CT_CONN_RATE_UNLIMITED, TYPE_UINT64) \
f(MAX_RECV_RATE, "maxRecvRate", uint64_t, max_recv_rate, CT_CONN_RATE_UNLIMITED, TYPE_UINT64) \
f(GROUP_CONN_LIMIT, "groupConnLimit", uint64_t, group_conn_limit, CT_CONN_RATE_UNLIMITED, TYPE_UINT64) \
f(ISOLATE_SESSION, "isolateSession", bool, isolate_session, false, TYPE_BOOL)
#define CT_CONNECTION_DEFAULT_PRIORITY
Definition ctaps.h:22
#define CT_CONN_RATE_UNLIMITED
Special value: No rate limit.
Definition ctaps.h:263
ct_connection_scheduler_enum_t
Connection scheduling algorithms for multipath.
Definition ctaps.h:291
#define CT_CONN_CHECKSUM_FULL_COVERAGE
Special value: Full checksum.
Definition ctaps.h:268
ct_multipath_policy_enum_t
Policies for multipath traffic distribution.
Definition ctaps.h:312
#define CT_CONN_TIMEOUT_DISABLED
0 Means no timeout in ms
Definition ctaps.h:258
@ CT_CONN_SCHEDULER_WEIGHTED_FAIR_QUEUEING
Weighted fair queueing across paths.
Definition ctaps.h:292
@ CT_MULTIPATH_POLICY_HANDOVER
Use paths sequentially (failover only)
Definition ctaps.h:313

Definition at line 319 of file ctaps.h.

◆ output_enum

#define output_enum (   enum_name,
  string_name,
  property_type,
  token_name,
  default_value,
  type 
)     enum_name,

Definition at line 245 of file ctaps.h.

◆ output_message_context_getter_declaration

#define output_message_context_getter_declaration (   enum_name,
  string_name,
  property_type,
  token_name,
  default_value,
  type_enum 
)
Value:
CT_EXTERN property_type ct_message_context_get_##token_name( \
const ct_message_context_t* msg_ctx);
#define CT_EXTERN
Definition ctaps.h:19
Opaque handle representing message metadata to pass to sending protocol.

Definition at line 1088 of file ctaps.h.

◆ output_message_context_setter_declaration

#define output_message_context_setter_declaration (   enum_name,
  string_name,
  property_type,
  token_name,
  default_value,
  type_enum 
)
Value:
CT_EXTERN void ct_message_context_set_##token_name(ct_message_context_t* msg_ctx, \
property_type val);

Definition at line 1093 of file ctaps.h.

◆ output_message_property_getter_declaration

#define output_message_property_getter_declaration (   enum_name,
  string_name,
  property_type,
  token_name,
  default_value,
  type_enum 
)
Value:
CT_EXTERN property_type ct_message_properties_get_##token_name( \
const ct_message_properties_t* msg_props);
Collection of message properties for per-message transmission control.

Definition at line 451 of file ctaps.h.

◆ output_message_property_setter_declaration

#define output_message_property_setter_declaration (   enum_name,
  string_name,
  property_type,
  token_name,
  default_value,
  type_enum 
)
Value:
CT_EXTERN void ct_message_properties_set_##token_name(ct_message_properties_t* msg_props, \
property_type val);

Definition at line 456 of file ctaps.h.

◆ output_transport_property_getter_declaration

#define output_transport_property_getter_declaration (   enum_name,
  string_name,
  property_type,
  token_name,
  default_value,
  type_enum 
)
Value:
CT_EXTERN property_type ct_transport_properties_get_##token_name( \
const ct_transport_properties_t* transport_props);
Opaque handle representing transport properties used for selecting and configuring protocols.

Definition at line 360 of file ctaps.h.

◆ output_transport_property_preference_getter_declaration

#define output_transport_property_preference_getter_declaration (   enum_name,
  string_name,
  property_type,
  token_name,
  default_value,
  type 
)
Value:
CT_EXTERN ct_selection_preference_enum_t ct_transport_properties_get_##token_name##_preference( \
const ct_transport_properties_t* transport_props, const char* value);

Definition at line 365 of file ctaps.h.

◆ output_transport_property_preference_set_adder

#define output_transport_property_preference_set_adder (   enum_name,
  string_name,
  property_type,
  token_name,
  default_value,
  type 
)
Value:
CT_EXTERN int ct_transport_properties_add_##token_name##_preference( \
ct_transport_properties_t* transport_props, const char* value, \

Definition at line 375 of file ctaps.h.

◆ output_transport_property_setter_declaration

#define output_transport_property_setter_declaration (   enum_name,
  string_name,
  property_type,
  token_name,
  default_value,
  type_enum 
)
Value:
CT_EXTERN void ct_transport_properties_set_##token_name( \
ct_transport_properties_t* transport_props, property_type val);

Definition at line 370 of file ctaps.h.

◆ RUNTIME_DEPENDENT_DEFAULT

#define RUNTIME_DEPENDENT_DEFAULT   0

Definition at line 219 of file ctaps.h.

Typedef Documentation

◆ ct_connection_t

typedef struct ct_connection_s ct_connection_t

Definition at line 32 of file ctaps.h.

◆ ct_listener_t

typedef struct ct_listener_s ct_listener_t

Definition at line 41 of file ctaps.h.

◆ ct_local_endpoint_t

typedef struct ct_local_endpoint_s ct_local_endpoint_t

Definition at line 690 of file ctaps.h.

◆ ct_message_context_t

typedef struct ct_message_context_s ct_message_context_t

Definition at line 1024 of file ctaps.h.

◆ ct_message_properties_t

typedef struct ct_message_properties_s ct_message_properties_t

Definition at line 430 of file ctaps.h.

◆ ct_message_t

typedef struct ct_message_s ct_message_t

Definition at line 933 of file ctaps.h.

◆ ct_preconnection_t

typedef struct ct_preconnection_s ct_preconnection_t

Definition at line 1322 of file ctaps.h.

◆ ct_remote_endpoint_t

typedef struct ct_remote_endpoint_s ct_remote_endpoint_t

Definition at line 699 of file ctaps.h.

◆ ct_security_parameters_t

typedef struct ct_security_parameters_s ct_security_parameters_t

Definition at line 509 of file ctaps.h.

◆ ct_transport_properties_t

typedef struct ct_transport_properties_s ct_transport_properties_t

Definition at line 358 of file ctaps.h.

Function Documentation

◆ ct_message_context_free()

void ct_message_context_free ( ct_message_context_t message_context)

Free resources in a message context.

Parameters
[in]message_contextContext to free

◆ ct_message_context_get_capacity_profile()

ct_capacity_profile_enum_t ct_message_context_get_capacity_profile ( const ct_message_context_t msg_ctx)

◆ ct_message_context_get_checksum_len()

uint32_t ct_message_context_get_checksum_len ( const ct_message_context_t msg_ctx)

◆ ct_message_context_get_final()

bool ct_message_context_get_final ( const ct_message_context_t msg_ctx)

◆ ct_message_context_get_lifetime()

uint64_t ct_message_context_get_lifetime ( const ct_message_context_t msg_ctx)

◆ ct_message_context_get_local_endpoint()

const ct_local_endpoint_t * ct_message_context_get_local_endpoint ( const ct_message_context_t message_context)

Get the local endpoint from a message context.

Parameters
[in]message_contextContext to get local endpoint from
Returns
Pointer to local endpoint, or NULL if message_context is NULL or local endpoint not set

◆ ct_message_context_get_message_properties()

const ct_message_properties_t * ct_message_context_get_message_properties ( const ct_message_context_t message_context)

Get message properties from a message context.

Returns a pointer to the message properties contained in the message context. The returned pointer is owned by the message context and should not be freed.

Parameters
[in]message_contextContext to get properties from
Returns
Pointer to message properties, or NULL if message_context is NULL

◆ ct_message_context_get_no_fragmentation()

bool ct_message_context_get_no_fragmentation ( const ct_message_context_t msg_ctx)

◆ ct_message_context_get_no_segmentation()

bool ct_message_context_get_no_segmentation ( const ct_message_context_t msg_ctx)

◆ ct_message_context_get_ordered()

bool ct_message_context_get_ordered ( const ct_message_context_t msg_ctx)

◆ ct_message_context_get_priority()

uint32_t ct_message_context_get_priority ( const ct_message_context_t msg_ctx)

◆ ct_message_context_get_receive_context()

void * ct_message_context_get_receive_context ( const ct_message_context_t message_context)

Get the receive context from a message context.

The receive context is a user-provided pointer that can be set in the ct_receive_callbacks_t structure. It is intended to allow users to associate custom data with a specific receive callback invocation.

See also
ct_receive_callbacks_t::per_receive_context
Parameters
[in]message_contextContext to get receive context from
Returns
User-provided receive context pointer, or NULL if message_context is NULL or no receive context set

◆ ct_message_context_get_reliable()

bool ct_message_context_get_reliable ( const ct_message_context_t msg_ctx)

◆ ct_message_context_get_remote_endpoint()

const ct_remote_endpoint_t * ct_message_context_get_remote_endpoint ( const ct_message_context_t message_context)

Get the remote endpoint from a message context.

Parameters
[in]message_contextContext to get remote endpoint from
Returns
Pointer to remote endpoint, or NULL if message_context is NULL or remote endpoint not set

◆ ct_message_context_get_safely_replayable()

bool ct_message_context_get_safely_replayable ( const ct_message_context_t msg_ctx)

◆ ct_message_context_new()

ct_message_context_t * ct_message_context_new ( void  )

Initialize a message context with default values.

Returns
Heap allocated empty message context

◆ ct_message_context_set_capacity_profile()

void ct_message_context_set_capacity_profile ( ct_message_context_t msg_ctx,
ct_capacity_profile_enum_t  val 
)

◆ ct_message_context_set_checksum_len()

void ct_message_context_set_checksum_len ( ct_message_context_t msg_ctx,
uint32_t  val 
)

◆ ct_message_context_set_final()

void ct_message_context_set_final ( ct_message_context_t msg_ctx,
bool  val 
)

◆ ct_message_context_set_lifetime()

void ct_message_context_set_lifetime ( ct_message_context_t msg_ctx,
uint64_t  val 
)

◆ ct_message_context_set_no_fragmentation()

void ct_message_context_set_no_fragmentation ( ct_message_context_t msg_ctx,
bool  val 
)

◆ ct_message_context_set_no_segmentation()

void ct_message_context_set_no_segmentation ( ct_message_context_t msg_ctx,
bool  val 
)

◆ ct_message_context_set_ordered()

void ct_message_context_set_ordered ( ct_message_context_t msg_ctx,
bool  val 
)

◆ ct_message_context_set_priority()

void ct_message_context_set_priority ( ct_message_context_t msg_ctx,
uint32_t  val 
)

◆ ct_message_context_set_reliable()

void ct_message_context_set_reliable ( ct_message_context_t msg_ctx,
bool  val 
)

◆ ct_message_context_set_safely_replayable()

void ct_message_context_set_safely_replayable ( ct_message_context_t msg_ctx,
bool  val 
)

◆ ct_message_properties_get_capacity_profile()

ct_capacity_profile_enum_t ct_message_properties_get_capacity_profile ( const ct_message_properties_t msg_props)

◆ ct_message_properties_get_checksum_len()

uint32_t ct_message_properties_get_checksum_len ( const ct_message_properties_t msg_props)

◆ ct_message_properties_get_final()

bool ct_message_properties_get_final ( const ct_message_properties_t msg_props)

◆ ct_message_properties_get_lifetime()

uint64_t ct_message_properties_get_lifetime ( const ct_message_properties_t msg_props)

◆ ct_message_properties_get_no_fragmentation()

bool ct_message_properties_get_no_fragmentation ( const ct_message_properties_t msg_props)

◆ ct_message_properties_get_no_segmentation()

bool ct_message_properties_get_no_segmentation ( const ct_message_properties_t msg_props)

◆ ct_message_properties_get_ordered()

bool ct_message_properties_get_ordered ( const ct_message_properties_t msg_props)

◆ ct_message_properties_get_priority()

uint32_t ct_message_properties_get_priority ( const ct_message_properties_t msg_props)

◆ ct_message_properties_get_reliable()

bool ct_message_properties_get_reliable ( const ct_message_properties_t msg_props)

◆ ct_message_properties_get_safely_replayable()

bool ct_message_properties_get_safely_replayable ( const ct_message_properties_t msg_props)

◆ ct_message_properties_set_capacity_profile()

void ct_message_properties_set_capacity_profile ( ct_message_properties_t msg_props,
ct_capacity_profile_enum_t  val 
)

◆ ct_message_properties_set_checksum_len()

void ct_message_properties_set_checksum_len ( ct_message_properties_t msg_props,
uint32_t  val 
)

◆ ct_message_properties_set_final()

void ct_message_properties_set_final ( ct_message_properties_t msg_props,
bool  val 
)

◆ ct_message_properties_set_lifetime()

void ct_message_properties_set_lifetime ( ct_message_properties_t msg_props,
uint64_t  val 
)

◆ ct_message_properties_set_no_fragmentation()

void ct_message_properties_set_no_fragmentation ( ct_message_properties_t msg_props,
bool  val 
)

◆ ct_message_properties_set_no_segmentation()

void ct_message_properties_set_no_segmentation ( ct_message_properties_t msg_props,
bool  val 
)

◆ ct_message_properties_set_ordered()

void ct_message_properties_set_ordered ( ct_message_properties_t msg_props,
bool  val 
)

◆ ct_message_properties_set_priority()

void ct_message_properties_set_priority ( ct_message_properties_t msg_props,
uint32_t  val 
)

◆ ct_message_properties_set_reliable()

void ct_message_properties_set_reliable ( ct_message_properties_t msg_props,
bool  val 
)

◆ ct_message_properties_set_safely_replayable()

void ct_message_properties_set_safely_replayable ( ct_message_properties_t msg_props,
bool  val 
)