Constants¶
RD_KAFKA_LOG_PRINT¶
public RD_KAFKA_LOG_PRINT = 100
RD_KAFKA_LOG_SYSLOG¶
public RD_KAFKA_LOG_SYSLOG = 101
RD_KAFKA_LOG_SYSLOG_PRINT¶
public RD_KAFKA_LOG_SYSLOG_PRINT = 102
RD_KAFKA_MSG_PARTITIONER_RANDOM¶
public RD_KAFKA_MSG_PARTITIONER_RANDOM = 2
RD_KAFKA_MSG_PARTITIONER_CONSISTENT¶
public RD_KAFKA_MSG_PARTITIONER_CONSISTENT = 3
RD_KAFKA_MSG_PARTITIONER_CONSISTENT_RANDOM¶
public RD_KAFKA_MSG_PARTITIONER_CONSISTENT_RANDOM = 4
RD_KAFKA_MSG_PARTITIONER_MURMUR2¶
public RD_KAFKA_MSG_PARTITIONER_MURMUR2 = 5
RD_KAFKA_MSG_PARTITIONER_MURMUR2_RANDOM¶
public RD_KAFKA_MSG_PARTITIONER_MURMUR2_RANDOM = 6
RD_KAFKA_MSG_PARTITIONER_FNV1A¶
public RD_KAFKA_MSG_PARTITIONER_FNV1A = 7
RD_KAFKA_MSG_PARTITIONER_FNV1A_RANDOM¶
public RD_KAFKA_MSG_PARTITIONER_FNV1A_RANDOM = 8
RD_KAFKA_DESTROY_F_NO_CONSUMER_CLOSE¶
public RD_KAFKA_DESTROY_F_NO_CONSUMER_CLOSE = 8
Flags for rd_kafka_destroy_flags()
Don't call consumer_close() to leave group and commit final offsets.
This also disables consumer callbacks to be called from rd_kafka_destroy*(), such as rebalance_cb.
The consumer group handler is still closed internally, but from an application perspective none of the functionality from consumer_close() is performed.
RD_KAFKA_PARTITION_UA¶
public RD_KAFKA_PARTITION_UA = -1
Unassigned partition.
The unassigned partition is used by the producer API for messages that should be partitioned using the configured or default partitioner.
RD_KAFKA_OFFSET_BEGINNING¶
public RD_KAFKA_OFFSET_BEGINNING = -2
Start consuming from beginning of \ kafka partition queue: oldest msg
RD_KAFKA_OFFSET_END¶
public RD_KAFKA_OFFSET_END = -1
Start consuming from end of kafka \ partition queue: next msg
RD_KAFKA_OFFSET_STORED¶
public RD_KAFKA_OFFSET_STORED = -1000
Start consuming from offset retrieved \ from offset store
RD_KAFKA_OFFSET_INVALID¶
public RD_KAFKA_OFFSET_INVALID = -1001
Invalid offset
RD_KAFKA_OFFSET_TAIL_BASE¶
public RD_KAFKA_OFFSET_TAIL_BASE = -2000
RD_KAFKA_MSG_F_FREE¶
public RD_KAFKA_MSG_F_FREE = 1
Producer message flags.
Delegate freeing of payload to rdkafka. \
RD_KAFKA_MSG_F_COPY¶
public RD_KAFKA_MSG_F_COPY = 2
rdkafka will make a copy of the payload. \
RD_KAFKA_MSG_F_BLOCK¶
public RD_KAFKA_MSG_F_BLOCK = 4
Block produce*() on message queue full. \ WARNING: If a delivery report callback \ is used, the application MUST \ call rd_kafka_poll() (or equiv.) \ to make sure delivered messages \ are drained from the internal \ delivery report queue. \ Failure to do so will result \ in indefinitely blocking on \ the produce() call when the \ message queue is full.
RD_KAFKA_MSG_F_PARTITION¶
public RD_KAFKA_MSG_F_PARTITION = 8
produce_batch() will honor \ per-message partition.
RD_KAFKA_PURGE_F_QUEUE¶
public RD_KAFKA_PURGE_F_QUEUE = 1
Flags for rd_kafka_purge()
Purge messages in internal queues.
RD_KAFKA_PURGE_F_INFLIGHT¶
public RD_KAFKA_PURGE_F_INFLIGHT = 2
Purge messages in-flight to or from the broker. Purging these messages will void any future acknowledgements from the broker, making it impossible for the application to know if these messages were successfully delivered or not. Retrying these messages may lead to duplicates.
RD_KAFKA_PURGE_F_NON_BLOCKING¶
public RD_KAFKA_PURGE_F_NON_BLOCKING = 4
Don't wait for background thread queue purging to finish.
RD_KAFKA_EVENT_NONE¶
public RD_KAFKA_EVENT_NONE = 0
Unset value
RD_KAFKA_EVENT_DR¶
public RD_KAFKA_EVENT_DR = 1
Producer Delivery report batch
RD_KAFKA_EVENT_FETCH¶
public RD_KAFKA_EVENT_FETCH = 2
Fetched message (consumer)
RD_KAFKA_EVENT_LOG¶
public RD_KAFKA_EVENT_LOG = 4
Log message
RD_KAFKA_EVENT_ERROR¶
public RD_KAFKA_EVENT_ERROR = 8
Error
RD_KAFKA_EVENT_REBALANCE¶
public RD_KAFKA_EVENT_REBALANCE = 16
Group rebalance (consumer)
RD_KAFKA_EVENT_OFFSET_COMMIT¶
public RD_KAFKA_EVENT_OFFSET_COMMIT = 32
Offset commit result
RD_KAFKA_EVENT_STATS¶
public RD_KAFKA_EVENT_STATS = 64
Stats
RD_KAFKA_EVENT_CREATETOPICS_RESULT¶
public RD_KAFKA_EVENT_CREATETOPICS_RESULT = 100
CreateTopics_result_t
RD_KAFKA_EVENT_DELETETOPICS_RESULT¶
public RD_KAFKA_EVENT_DELETETOPICS_RESULT = 101
DeleteTopics_result_t
RD_KAFKA_EVENT_CREATEPARTITIONS_RESULT¶
public RD_KAFKA_EVENT_CREATEPARTITIONS_RESULT = 102
CreatePartitions_result_t
RD_KAFKA_EVENT_ALTERCONFIGS_RESULT¶
public RD_KAFKA_EVENT_ALTERCONFIGS_RESULT = 103
AlterConfigs_result_t
RD_KAFKA_EVENT_DESCRIBECONFIGS_RESULT¶
public RD_KAFKA_EVENT_DESCRIBECONFIGS_RESULT = 104
DescribeConfigs_result_t
RD_KAFKA_PRODUCER¶
public RD_KAFKA_PRODUCER = 0
Producer client
RD_KAFKA_CONSUMER¶
public RD_KAFKA_CONSUMER = 1
Consumer client
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE¶
public RD_KAFKA_TIMESTAMP_NOT_AVAILABLE = 0
Timestamp not available
RD_KAFKA_TIMESTAMP_CREATE_TIME¶
public RD_KAFKA_TIMESTAMP_CREATE_TIME = 1
Message creation time
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME¶
public RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME = 2
Log append time
RD_KAFKA_RESP_ERR__BEGIN¶
public RD_KAFKA_RESP_ERR__BEGIN = -200
Begin internal error codes
RD_KAFKA_RESP_ERR__BAD_MSG¶
public RD_KAFKA_RESP_ERR__BAD_MSG = -199
Received message is incorrect
RD_KAFKA_RESP_ERR__BAD_COMPRESSION¶
public RD_KAFKA_RESP_ERR__BAD_COMPRESSION = -198
Bad/unknown compression
RD_KAFKA_RESP_ERR__DESTROY¶
public RD_KAFKA_RESP_ERR__DESTROY = -197
Broker is going away
RD_KAFKA_RESP_ERR__FAIL¶
public RD_KAFKA_RESP_ERR__FAIL = -196
Generic failure
RD_KAFKA_RESP_ERR__TRANSPORT¶
public RD_KAFKA_RESP_ERR__TRANSPORT = -195
Broker transport failure
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE¶
public RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = -194
Critical system resource
RD_KAFKA_RESP_ERR__RESOLVE¶
public RD_KAFKA_RESP_ERR__RESOLVE = -193
Failed to resolve broker
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT¶
public RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = -192
Produced message timed out
RD_KAFKA_RESP_ERR__PARTITION_EOF¶
public RD_KAFKA_RESP_ERR__PARTITION_EOF = -191
Reached the end of the topic+partition queue on the broker. Not really an error. This event is disabled by default, see the enable.partition.eof
configuration property.
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION¶
public RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = -190
Permanent: Partition does not exist in cluster.
RD_KAFKA_RESP_ERR__FS¶
public RD_KAFKA_RESP_ERR__FS = -189
File or filesystem error
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC¶
public RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = -188
Permanent: Topic does not exist in cluster.
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN¶
public RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = -187
All broker connections are down.
RD_KAFKA_RESP_ERR__INVALID_ARG¶
public RD_KAFKA_RESP_ERR__INVALID_ARG = -186
Invalid argument, or invalid configuration
RD_KAFKA_RESP_ERR__TIMED_OUT¶
public RD_KAFKA_RESP_ERR__TIMED_OUT = -185
Operation timed out
RD_KAFKA_RESP_ERR__QUEUE_FULL¶
public RD_KAFKA_RESP_ERR__QUEUE_FULL = -184
Queue is full
RD_KAFKA_RESP_ERR__ISR_INSUFF¶
public RD_KAFKA_RESP_ERR__ISR_INSUFF = -183
ISR count < required.acks
RD_KAFKA_RESP_ERR__NODE_UPDATE¶
public RD_KAFKA_RESP_ERR__NODE_UPDATE = -182
Broker node update
RD_KAFKA_RESP_ERR__SSL¶
public RD_KAFKA_RESP_ERR__SSL = -181
SSL error
RD_KAFKA_RESP_ERR__WAIT_COORD¶
public RD_KAFKA_RESP_ERR__WAIT_COORD = -180
Waiting for coordinator to become available.
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP¶
public RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = -179
Unknown client group
RD_KAFKA_RESP_ERR__IN_PROGRESS¶
public RD_KAFKA_RESP_ERR__IN_PROGRESS = -178
Operation in progress
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS¶
public RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = -177
Previous operation in progress, wait for it to finish.
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION¶
public RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = -176
This operation would interfere with an existing subscription
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS¶
public RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = -175
Assigned partitions (rebalance_cb)
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS¶
public RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = -174
Revoked partitions (rebalance_cb)
RD_KAFKA_RESP_ERR__CONFLICT¶
public RD_KAFKA_RESP_ERR__CONFLICT = -173
Conflicting use
RD_KAFKA_RESP_ERR__STATE¶
public RD_KAFKA_RESP_ERR__STATE = -172
Wrong state
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL¶
public RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = -171
Unknown protocol
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED¶
public RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = -170
Not implemented
RD_KAFKA_RESP_ERR__AUTHENTICATION¶
public RD_KAFKA_RESP_ERR__AUTHENTICATION = -169
Authentication failure
RD_KAFKA_RESP_ERR__NO_OFFSET¶
public RD_KAFKA_RESP_ERR__NO_OFFSET = -168
No stored offset
RD_KAFKA_RESP_ERR__OUTDATED¶
public RD_KAFKA_RESP_ERR__OUTDATED = -167
Outdated
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE¶
public RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = -166
Timed out in queue
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE¶
public RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = -165
Feature not supported by broker
RD_KAFKA_RESP_ERR__WAIT_CACHE¶
public RD_KAFKA_RESP_ERR__WAIT_CACHE = -164
Awaiting cache update
RD_KAFKA_RESP_ERR__INTR¶
public RD_KAFKA_RESP_ERR__INTR = -163
Operation interrupted (e.g., due to yield))
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION¶
public RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = -162
Key serialization error
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION¶
public RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = -161
Value serialization error
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION¶
public RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = -160
Key deserialization error
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION¶
public RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = -159
Value deserialization error
RD_KAFKA_RESP_ERR__PARTIAL¶
public RD_KAFKA_RESP_ERR__PARTIAL = -158
Partial response
RD_KAFKA_RESP_ERR__READ_ONLY¶
public RD_KAFKA_RESP_ERR__READ_ONLY = -157
Modification attempted on read-only object
RD_KAFKA_RESP_ERR__NOENT¶
public RD_KAFKA_RESP_ERR__NOENT = -156
No such entry / item not found
RD_KAFKA_RESP_ERR__UNDERFLOW¶
public RD_KAFKA_RESP_ERR__UNDERFLOW = -155
Read underflow
RD_KAFKA_RESP_ERR__INVALID_TYPE¶
public RD_KAFKA_RESP_ERR__INVALID_TYPE = -154
Invalid type
RD_KAFKA_RESP_ERR__RETRY¶
public RD_KAFKA_RESP_ERR__RETRY = -153
Retry operation
RD_KAFKA_RESP_ERR__PURGE_QUEUE¶
public RD_KAFKA_RESP_ERR__PURGE_QUEUE = -152
Purged in queue
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT¶
public RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = -151
Purged in flight
RD_KAFKA_RESP_ERR__FATAL¶
public RD_KAFKA_RESP_ERR__FATAL = -150
Fatal error: see rd_kafka_fatal_error()
RD_KAFKA_RESP_ERR__INCONSISTENT¶
public RD_KAFKA_RESP_ERR__INCONSISTENT = -149
Inconsistent state
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE¶
public RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = -148
Gap-less ordering would not be guaranteed if proceeding
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED¶
public RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = -147
Maximum poll interval exceeded
RD_KAFKA_RESP_ERR__END¶
public RD_KAFKA_RESP_ERR__END = -100
End internal error codes
RD_KAFKA_RESP_ERR_UNKNOWN¶
public RD_KAFKA_RESP_ERR_UNKNOWN = -1
Unknown broker error
RD_KAFKA_RESP_ERR_NO_ERROR¶
public RD_KAFKA_RESP_ERR_NO_ERROR = 0
Success
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE¶
public RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1
Offset out of range
RD_KAFKA_RESP_ERR_INVALID_MSG¶
public RD_KAFKA_RESP_ERR_INVALID_MSG = 2
Invalid message
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART¶
public RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3
Unknown topic or partition
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE¶
public RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4
Invalid message size
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE¶
public RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5
Leader not available
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION¶
public RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6
Not leader for partition
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT¶
public RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7
Request timed out
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE¶
public RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8
Broker not available
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE¶
public RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9
Replica not available
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE¶
public RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10
Message size too large
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH¶
public RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11
StaleControllerEpochCode
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE¶
public RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12
Offset metadata string too large
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION¶
public RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13
Broker disconnected before response received
RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS¶
public RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS = 14
Group coordinator load in progress
RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE¶
public RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE = 15
Group coordinator not available
RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP¶
public RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP = 16
Not coordinator for group
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION¶
public RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17
Invalid topic
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE¶
public RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18
Message batch larger than configured server segment size
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS¶
public RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19
Not enough in-sync replicas
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND¶
public RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20
Message(s) written to insufficient number of in-sync replicas
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS¶
public RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21
Invalid required acks value
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION¶
public RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22
Specified group generation id is not valid
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL¶
public RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23
Inconsistent group protocol
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID¶
public RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24
Invalid group.id
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID¶
public RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25
Unknown member
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT¶
public RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26
Invalid session timeout
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS¶
public RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27
Group rebalance in progress
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE¶
public RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28
Commit offset data size is not valid
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED¶
public RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29
Topic authorization failed
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED¶
public RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30
Group authorization failed
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED¶
public RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31
Cluster authorization failed
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP¶
public RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32
Invalid timestamp
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33
Unsupported SASL mechanism
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE¶
public RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34
Illegal SASL state
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35
Unuspported version
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS¶
public RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36
Topic already exists
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS¶
public RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37
Invalid number of partitions
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR¶
public RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38
Invalid replication factor
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT¶
public RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39
Invalid replica assignment
RD_KAFKA_RESP_ERR_INVALID_CONFIG¶
public RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40
Invalid config
RD_KAFKA_RESP_ERR_NOT_CONTROLLER¶
public RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41
Not controller for cluster
RD_KAFKA_RESP_ERR_INVALID_REQUEST¶
public RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42
Invalid request
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43
Message format on broker does not support request
RD_KAFKA_RESP_ERR_POLICY_VIOLATION¶
public RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44
Policy violation
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER¶
public RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45
Broker received an out of order sequence number
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER¶
public RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46
Broker received a duplicate sequence number
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH¶
public RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47
Producer attempted an operation with an old epoch
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE¶
public RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48
Producer attempted a transactional operation in an invalid state
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING¶
public RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49
Producer attempted to use a producer id which is not currently assigned to its transactional id
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT¶
public RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50
Transaction timeout is larger than the maximum value allowed by the broker's max.transaction.timeout.ms
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS¶
public RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51
Producer attempted to update a transaction while another concurrent operation on the same transaction was ongoing
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED¶
public RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52
Indicates that the transaction coordinator sending a WriteTxnMarker is no longer the current coordinator for a given producer
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED¶
public RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53
Transactional Id authorization failed
RD_KAFKA_RESP_ERR_SECURITY_DISABLED¶
public RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54
Security features are disabled
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED¶
public RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55
Operation not attempted
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR¶
public RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56
Disk error when trying to access log file on the disk
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND¶
public RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57
The user-specified log directory is not found in the broker config
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED¶
public RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58
SASL Authentication failed
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID¶
public RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59
Unknown Producer Id
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS¶
public RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60
Partition reassignment is in progress
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED¶
public RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61
Delegation Token feature is not enabled
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND¶
public RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62
Delegation Token is not found on server
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH¶
public RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63
Specified Principal is not valid Owner/Renewer
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED¶
public RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64
Delegation Token requests are not allowed on this connection
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED¶
public RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65
Delegation Token authorization failed
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED¶
public RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66
Delegation Token is expired
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE¶
public RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67
Supplied principalType is not supported
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP¶
public RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68
The group is not empty
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND¶
public RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69
The group id does not exist
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND¶
public RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70
The fetch session ID was not found
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH¶
public RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71
The fetch session epoch is invalid
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND¶
public RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72
No matching listener
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED¶
public RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73
Topic deletion is disabled
RD_KAFKA_VTYPE_END¶
public RD_KAFKA_VTYPE_END = 0
va-arg sentinel
See also
RD_KAFKA_VTYPE_TOPIC¶
public RD_KAFKA_VTYPE_TOPIC = 1
(const char *) Topic name
RD_KAFKA_VTYPE_RKT¶
public RD_KAFKA_VTYPE_RKT = 2
(rd_kafka_topic_t *) Topic handle
RD_KAFKA_VTYPE_PARTITION¶
public RD_KAFKA_VTYPE_PARTITION = 3
(int32_t) Partition
RD_KAFKA_VTYPE_VALUE¶
public RD_KAFKA_VTYPE_VALUE = 4
(void *, size_t) Message value (payload)
RD_KAFKA_VTYPE_KEY¶
public RD_KAFKA_VTYPE_KEY = 5
(void *, size_t) Message key
RD_KAFKA_VTYPE_OPAQUE¶
public RD_KAFKA_VTYPE_OPAQUE = 6
(void *) Per-message application opaque value. This is the same as the _private field in rd_kafka_message_t, also known as the msg_opaque.
RD_KAFKA_VTYPE_MSGFLAGS¶
public RD_KAFKA_VTYPE_MSGFLAGS = 7
(int) RD_KAFKA_MSG_F_.. flags
RD_KAFKA_VTYPE_TIMESTAMP¶
public RD_KAFKA_VTYPE_TIMESTAMP = 8
(int64_t) Milliseconds since epoch UTC
RD_KAFKA_VTYPE_HEADER¶
public RD_KAFKA_VTYPE_HEADER = 9
(const char *, const void *, ssize_t) Message Header
RD_KAFKA_VTYPE_HEADERS¶
public RD_KAFKA_VTYPE_HEADERS = 10
(rd_kafka_headers_t *) Headers list
RD_KAFKA_MSG_STATUS_NOT_PERSISTED¶
public RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0
Message was never transmitted to the broker, or failed with an error indicating it was not written to the log. Application retry risks ordering, but not duplication.
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED¶
public RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1
Message was transmitted to broker, but no acknowledgement was received. Application retry risks ordering and duplication.
RD_KAFKA_MSG_STATUS_PERSISTED¶
public RD_KAFKA_MSG_STATUS_PERSISTED = 2
Message was written to the log and acknowledged by the broker. No reason for application to retry. Note: this value should only be trusted with acks=all
.
RD_KAFKA_CONF_UNKNOWN¶
public RD_KAFKA_CONF_UNKNOWN = -2
Unknown configuration name.
RD_KAFKA_CONF_INVALID¶
public RD_KAFKA_CONF_INVALID = -1
Invalid configuration value or property or value not supported in this build.
RD_KAFKA_CONF_OK¶
public RD_KAFKA_CONF_OK = 0
Configuration okay
RD_KAFKA_ADMIN_OP_ANY¶
public RD_KAFKA_ADMIN_OP_ANY = 0
Default value
RD_KAFKA_ADMIN_OP_CREATETOPICS¶
public RD_KAFKA_ADMIN_OP_CREATETOPICS = 1
CreateTopics
RD_KAFKA_ADMIN_OP_DELETETOPICS¶
public RD_KAFKA_ADMIN_OP_DELETETOPICS = 2
DeleteTopics
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS¶
public RD_KAFKA_ADMIN_OP_CREATEPARTITIONS = 3
CreatePartitions
RD_KAFKA_ADMIN_OP_ALTERCONFIGS¶
public RD_KAFKA_ADMIN_OP_ALTERCONFIGS = 4
AlterConfigs
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS¶
public RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS = 5
DescribeConfigs
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG¶
public RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0
Source unknown, e.g., in the ConfigEntry used for alter requests where source is not set
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG¶
public RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1
Dynamic topic config that is configured for a specific topic
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG¶
public RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2
Dynamic broker config that is configured for a specific broker
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG¶
public RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3
Dynamic broker config that is configured as default for all brokers in the cluster
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG¶
public RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4
Static broker config provided as broker properties at startup (e.g. from server.properties file)
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG¶
public RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5
Built-in default configuration for configs that have a default value
RD_KAFKA_CONFIG_SOURCE__CNT¶
public RD_KAFKA_CONFIG_SOURCE__CNT = 6
Number of source types defined
RD_KAFKA_RESOURCE_UNKNOWN¶
public RD_KAFKA_RESOURCE_UNKNOWN = 0
Unknown
RD_KAFKA_RESOURCE_ANY¶
public RD_KAFKA_RESOURCE_ANY = 1
Any (used for lookups)
RD_KAFKA_RESOURCE_TOPIC¶
public RD_KAFKA_RESOURCE_TOPIC = 2
Topic
RD_KAFKA_RESOURCE_GROUP¶
public RD_KAFKA_RESOURCE_GROUP = 3
Group
RD_KAFKA_RESOURCE_BROKER¶
public RD_KAFKA_RESOURCE_BROKER = 4
Broker
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH¶
public RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74
Leader epoch is older than broker epoch
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH¶
public RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75
Leader epoch is newer than broker epoch
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH¶
public RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77
Broker epoch has changed
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE¶
public RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78
Leader high watermark is not caught up
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED¶
public RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79
Group member needs a valid member ID
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE¶
public RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80
Preferred leader was not available
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED¶
public RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81
Consumer group has reached maximum size
RD_KAFKA_EVENT_OAUTHBEARER_TOKEN_REFRESH¶
public RD_KAFKA_EVENT_OAUTHBEARER_TOKEN_REFRESH = 256
SASL/OAUTHBEARER token needs to be refreshed
RD_KAFKA_CERT_PUBLIC_KEY¶
public RD_KAFKA_CERT_PUBLIC_KEY = 0
Client's public key
RD_KAFKA_CERT_PRIVATE_KEY¶
public RD_KAFKA_CERT_PRIVATE_KEY = 1
Client's private key
RD_KAFKA_CERT_CA¶
public RD_KAFKA_CERT_CA = 2
CA certificate
RD_KAFKA_CERT__CNT¶
public RD_KAFKA_CERT__CNT = 3
RD_KAFKA_CERT_ENC_PKCS12¶
public RD_KAFKA_CERT_ENC_PKCS12 = 0
PKCS#12
RD_KAFKA_CERT_ENC_DER¶
public RD_KAFKA_CERT_ENC_DER = 1
DER / binary X.509 ASN1
RD_KAFKA_CERT_ENC_PEM¶
public RD_KAFKA_CERT_ENC_PEM = 2
PEM
RD_KAFKA_CERT_ENC__CNT¶
public RD_KAFKA_CERT_ENC__CNT = 3
RD_KAFKA_THREAD_MAIN¶
public RD_KAFKA_THREAD_MAIN = 0
librdkafka's internal main thread
RD_KAFKA_THREAD_BACKGROUND¶
public RD_KAFKA_THREAD_BACKGROUND = 1
Background thread (if enabled)
RD_KAFKA_THREAD_BROKER¶
public RD_KAFKA_THREAD_BROKER = 2
Per-broker thread
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER¶
public RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = -146
Unknown broker
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS¶
public RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14
Coordinator load in progress
See also
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE¶
public RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15
Coordinator not available
See also
RD_KAFKA_RESP_ERR_NOT_COORDINATOR¶
public RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16
Not coordinator
See also
RD_KAFKA_RESP_ERR__NOT_CONFIGURED¶
public RD_KAFKA_RESP_ERR__NOT_CONFIGURED = -145
Functionality not configured
RD_KAFKA_RESP_ERR__FENCED¶
public RD_KAFKA_RESP_ERR__FENCED = -144
Instance has been fenced
RD_KAFKA_RESP_ERR__APPLICATION¶
public RD_KAFKA_RESP_ERR__APPLICATION = -143
Application generated error
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID¶
public RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82
Static consumer fenced by other consumer with same group.instance.id.
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE¶
public RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83
Eligible partition leaders are not available
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED¶
public RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84
Leader election not needed for topic partition
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS¶
public RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85
No partition reassignment is in progress
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC¶
public RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86
Deleting offsets of a topic while the consumer group is subscribed to it
RD_KAFKA_RESP_ERR_INVALID_RECORD¶
public RD_KAFKA_RESP_ERR_INVALID_RECORD = 87
Broker failed to validate record
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT¶
public RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88
There are unstable offsets that need to be cleared
RD_KAFKA_EVENT_DELETERECORDS_RESULT¶
public RD_KAFKA_EVENT_DELETERECORDS_RESULT = 105
DeleteRecords_result_t
RD_KAFKA_EVENT_DELETEGROUPS_RESULT¶
public RD_KAFKA_EVENT_DELETEGROUPS_RESULT = 106
DeleteGroups_result_t
RD_KAFKA_EVENT_DELETECONSUMERGROUPOFFSETS_RESULT¶
public RD_KAFKA_EVENT_DELETECONSUMERGROUPOFFSETS_RESULT = 107
DeleteConsumerGroupOffsets_result_t
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST¶
public RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = -142
Assignment lost
RD_KAFKA_RESP_ERR__NOOP¶
public RD_KAFKA_RESP_ERR__NOOP = -141
No operation performed
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED¶
public RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89
Throttling quota has been exceeded
RD_KAFKA_RESP_ERR_PRODUCER_FENCED¶
public RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90
There is a newer producer with the same transactionalId which fences the current one
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND¶
public RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91
Request illegally referred to resource that does not exist
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE¶
public RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92
Request illegally referred to the same resource twice
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL¶
public RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93
Requested credential would not meet criteria for acceptability
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET¶
public RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94
Indicates that the either the sender or recipient of a voter-only request is not one of the expected voters
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION¶
public RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95
Invalid update version
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED¶
public RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96
Unable to update finalized features due to server error
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE¶
public RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97
Request principal deserialization failed during forwarding
RD_KAFKA_ADMIN_OP_DELETERECORDS¶
public RD_KAFKA_ADMIN_OP_DELETERECORDS = 6
DeleteRecords
RD_KAFKA_ADMIN_OP_DELETEGROUPS¶
public RD_KAFKA_ADMIN_OP_DELETEGROUPS = 7
DeleteGroups
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS¶
public RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS = 8
DeleteConsumerGroupOffsets
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET¶
public RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = -140
No offset to automatically reset to
RD_KAFKA_EVENT_BACKGROUND¶
public RD_KAFKA_EVENT_BACKGROUND = 512
Enable background thread.
RD_KAFKA_EVENT_CREATEACLS_RESULT¶
public RD_KAFKA_EVENT_CREATEACLS_RESULT = 1024
CreateAcls_result_t
RD_KAFKA_EVENT_DESCRIBEACLS_RESULT¶
public RD_KAFKA_EVENT_DESCRIBEACLS_RESULT = 2048
DescribeAcls_result_t
RD_KAFKA_EVENT_DELETEACLS_RESULT¶
public RD_KAFKA_EVENT_DELETEACLS_RESULT = 4096
DeleteAcls_result_t
RD_KAFKA_ADMIN_OP_CREATEACLS¶
public RD_KAFKA_ADMIN_OP_CREATEACLS = 9
CreateAcls
RD_KAFKA_ADMIN_OP_DESCRIBEACLS¶
public RD_KAFKA_ADMIN_OP_DESCRIBEACLS = 10
DescribeAcls
RD_KAFKA_ADMIN_OP_DELETEACLS¶
public RD_KAFKA_ADMIN_OP_DELETEACLS = 11
DeleteAcls
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN¶
public RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0
Unknown
RD_KAFKA_RESOURCE_PATTERN_ANY¶
public RD_KAFKA_RESOURCE_PATTERN_ANY = 1
Any (used for lookups)
RD_KAFKA_RESOURCE_PATTERN_MATCH¶
public RD_KAFKA_RESOURCE_PATTERN_MATCH = 2
Match: will perform pattern matching
RD_KAFKA_RESOURCE_PATTERN_LITERAL¶
public RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3
Literal: A literal resource name
RD_KAFKA_RESOURCE_PATTERN_PREFIXED¶
public RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4
Prefixed: A prefixed resource name
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT¶
public RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT = 5
RD_KAFKA_ACL_OPERATION_UNKNOWN¶
public RD_KAFKA_ACL_OPERATION_UNKNOWN = 0
Unknown
RD_KAFKA_ACL_OPERATION_ANY¶
public RD_KAFKA_ACL_OPERATION_ANY = 1
In a filter, matches any AclOperation
RD_KAFKA_ACL_OPERATION_ALL¶
public RD_KAFKA_ACL_OPERATION_ALL = 2
ALL operation
RD_KAFKA_ACL_OPERATION_READ¶
public RD_KAFKA_ACL_OPERATION_READ = 3
READ operation
RD_KAFKA_ACL_OPERATION_WRITE¶
public RD_KAFKA_ACL_OPERATION_WRITE = 4
WRITE operation
RD_KAFKA_ACL_OPERATION_CREATE¶
public RD_KAFKA_ACL_OPERATION_CREATE = 5
CREATE operation
RD_KAFKA_ACL_OPERATION_DELETE¶
public RD_KAFKA_ACL_OPERATION_DELETE = 6
DELETE operation
RD_KAFKA_ACL_OPERATION_ALTER¶
public RD_KAFKA_ACL_OPERATION_ALTER = 7
ALTER operation
RD_KAFKA_ACL_OPERATION_DESCRIBE¶
public RD_KAFKA_ACL_OPERATION_DESCRIBE = 8
DESCRIBE operation
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION¶
public RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9
CLUSTER_ACTION operation
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS¶
public RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10
DESCRIBE_CONFIGS operation
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS¶
public RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11
ALTER_CONFIGS operation
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE¶
public RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12
IDEMPOTENT_WRITE operation
RD_KAFKA_ACL_OPERATION__CNT¶
public RD_KAFKA_ACL_OPERATION__CNT = 13
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN¶
public RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0
Unknown
RD_KAFKA_ACL_PERMISSION_TYPE_ANY¶
public RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1
In a filter, matches any AclPermissionType
RD_KAFKA_ACL_PERMISSION_TYPE_DENY¶
public RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2
Disallows access
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW¶
public RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3
Grants access.
RD_KAFKA_ACL_PERMISSION_TYPE__CNT¶
public RD_KAFKA_ACL_PERMISSION_TYPE__CNT = 4
RD_KAFKA_EVENT_LISTCONSUMERGROUPS_RESULT¶
public RD_KAFKA_EVENT_LISTCONSUMERGROUPS_RESULT = 8192
ListConsumerGroupsResult_t
RD_KAFKA_EVENT_DESCRIBECONSUMERGROUPS_RESULT¶
public RD_KAFKA_EVENT_DESCRIBECONSUMERGROUPS_RESULT = 16384
DescribeConsumerGroups_result_t
RD_KAFKA_EVENT_LISTCONSUMERGROUPOFFSETS_RESULT¶
public RD_KAFKA_EVENT_LISTCONSUMERGROUPOFFSETS_RESULT = 32768
ListConsumerGroupOffsets_result_t
RD_KAFKA_EVENT_ALTERCONSUMERGROUPOFFSETS_RESULT¶
public RD_KAFKA_EVENT_ALTERCONSUMERGROUPOFFSETS_RESULT = 65536
AlterConsumerGroupOffsets_result_t
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN¶
public RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE¶
public RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE¶
public RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE¶
public RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD¶
public RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY¶
public RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5
RD_KAFKA_CONSUMER_GROUP_STATE__CNT¶
public RD_KAFKA_CONSUMER_GROUP_STATE__CNT = 6
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS¶
public RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS = 12
ListConsumerGroups
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS¶
public RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS = 13
DescribeConsumerGroups
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS¶
public RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS = 14
ListConsumerGroupOffsets
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS¶
public RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS = 15
AlterConsumerGroupOffsets
RD_KAFKA_RESP_ERR__LOG_TRUNCATION¶
public RD_KAFKA_RESP_ERR__LOG_TRUNCATION = -139
Partition log truncation detected
RD_KAFKA_EVENT_INCREMENTALALTERCONFIGS_RESULT¶
public RD_KAFKA_EVENT_INCREMENTALALTERCONFIGS_RESULT = 131072
IncrementalAlterConfigs_result_t
RD_KAFKA_EVENT_DESCRIBEUSERSCRAMCREDENTIALS_RESULT¶
public RD_KAFKA_EVENT_DESCRIBEUSERSCRAMCREDENTIALS_RESULT = 262144
DescribeUserScramCredentials_result_t
RD_KAFKA_EVENT_ALTERUSERSCRAMCREDENTIALS_RESULT¶
public RD_KAFKA_EVENT_ALTERUSERSCRAMCREDENTIALS_RESULT = 524288
AlterUserScramCredentials_result_t
RD_KAFKA_ADMIN_OP_INCREMENTALALTERCONFIGS¶
public RD_KAFKA_ADMIN_OP_INCREMENTALALTERCONFIGS = 16
IncrementalAlterConfigs
RD_KAFKA_ADMIN_OP_DESCRIBEUSERSCRAMCREDENTIALS¶
public RD_KAFKA_ADMIN_OP_DESCRIBEUSERSCRAMCREDENTIALS = 17
DescribeUserScramCredentials
RD_KAFKA_ADMIN_OP_ALTERUSERSCRAMCREDENTIALS¶
public RD_KAFKA_ADMIN_OP_ALTERUSERSCRAMCREDENTIALS = 18
AlterUserScramCredentials
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SET¶
public RD_KAFKA_ALTER_CONFIG_OP_TYPE_SET = 0
RD_KAFKA_ALTER_CONFIG_OP_TYPE_DELETE¶
public RD_KAFKA_ALTER_CONFIG_OP_TYPE_DELETE = 1
RD_KAFKA_ALTER_CONFIG_OP_TYPE_APPEND¶
public RD_KAFKA_ALTER_CONFIG_OP_TYPE_APPEND = 2
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SUBTRACT¶
public RD_KAFKA_ALTER_CONFIG_OP_TYPE_SUBTRACT = 3
RD_KAFKA_ALTER_CONFIG_OP_TYPE__CNT¶
public RD_KAFKA_ALTER_CONFIG_OP_TYPE__CNT = 4
RD_KAFKA_SCRAM_MECHANISM_UNKNOWN¶
public RD_KAFKA_SCRAM_MECHANISM_UNKNOWN = 0
RD_KAFKA_SCRAM_MECHANISM_SHA_256¶
public RD_KAFKA_SCRAM_MECHANISM_SHA_256 = 1
RD_KAFKA_SCRAM_MECHANISM_SHA_512¶
public RD_KAFKA_SCRAM_MECHANISM_SHA_512 = 2
RD_KAFKA_SCRAM_MECHANISM__CNT¶
public RD_KAFKA_SCRAM_MECHANISM__CNT = 3
RD_KAFKA_EVENT_DESCRIBETOPICS_RESULT¶
public RD_KAFKA_EVENT_DESCRIBETOPICS_RESULT = 1048576
DescribeTopics_result_t
RD_KAFKA_EVENT_DESCRIBECLUSTER_RESULT¶
public RD_KAFKA_EVENT_DESCRIBECLUSTER_RESULT = 2097152
DescribeCluster_result_t
RD_KAFKA_EVENT_LISTOFFSETS_RESULT¶
public RD_KAFKA_EVENT_LISTOFFSETS_RESULT = 4194304
ListOffsets_result_t
RD_KAFKA_ADMIN_OP_DESCRIBETOPICS¶
public RD_KAFKA_ADMIN_OP_DESCRIBETOPICS = 19
DescribeTopics
RD_KAFKA_ADMIN_OP_DESCRIBECLUSTER¶
public RD_KAFKA_ADMIN_OP_DESCRIBECLUSTER = 20
DescribeCluster
RD_KAFKA_ADMIN_OP_LISTOFFSETS¶
public RD_KAFKA_ADMIN_OP_LISTOFFSETS = 21
ListOffsets
RD_KAFKA_ISOLATION_LEVEL_READ_UNCOMMITTED¶
public RD_KAFKA_ISOLATION_LEVEL_READ_UNCOMMITTED = 0
RD_KAFKA_ISOLATION_LEVEL_READ_COMMITTED¶
public RD_KAFKA_ISOLATION_LEVEL_READ_COMMITTED = 1
RD_KAFKA_OFFSET_SPEC_MAX_TIMESTAMP¶
public RD_KAFKA_OFFSET_SPEC_MAX_TIMESTAMP = -3
RD_KAFKA_OFFSET_SPEC_EARLIEST¶
public RD_KAFKA_OFFSET_SPEC_EARLIEST = -2
RD_KAFKA_OFFSET_SPEC_LATEST¶
public RD_KAFKA_OFFSET_SPEC_LATEST = -1
RD_KAFKA_RESP_ERR__INVALID_DIFFERENT_RECORD¶
public RD_KAFKA_RESP_ERR__INVALID_DIFFERENT_RECORD = -138
A different record in the batch was invalid and this message failed persisting.
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_ID¶
public RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_ID = 100
Unknown Topic Id
RD_KAFKA_RESP_ERR_FENCED_MEMBER_EPOCH¶
public RD_KAFKA_RESP_ERR_FENCED_MEMBER_EPOCH = 110
The member epoch is fenced by the group coordinator
RD_KAFKA_RESP_ERR_UNRELEASED_INSTANCE_ID¶
public RD_KAFKA_RESP_ERR_UNRELEASED_INSTANCE_ID = 111
The instance ID is still used by another member in the consumer group
RD_KAFKA_RESP_ERR_UNSUPPORTED_ASSIGNOR¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_ASSIGNOR = 112
The assignor or its version range is not supported by the consumer group
RD_KAFKA_RESP_ERR_STALE_MEMBER_EPOCH¶
public RD_KAFKA_RESP_ERR_STALE_MEMBER_EPOCH = 113
The member epoch is stale
RD_KAFKA_RESP_ERR_UNKNOWN_SUBSCRIPTION_ID¶
public RD_KAFKA_RESP_ERR_UNKNOWN_SUBSCRIPTION_ID = 117
Client sent a push telemetry request with an invalid or outdated subscription ID.
RD_KAFKA_RESP_ERR_TELEMETRY_TOO_LARGE¶
public RD_KAFKA_RESP_ERR_TELEMETRY_TOO_LARGE = 118
Client sent a push telemetry request larger than the maximum size the broker will accept.
RD_KAFKA_EVENT_ELECTLEADERS_RESULT¶
public RD_KAFKA_EVENT_ELECTLEADERS_RESULT = 8388608
ElectLeaders_result_t
RD_KAFKA_CONSUMER_GROUP_TYPE_UNKNOWN¶
public RD_KAFKA_CONSUMER_GROUP_TYPE_UNKNOWN = 0
RD_KAFKA_CONSUMER_GROUP_TYPE_CONSUMER¶
public RD_KAFKA_CONSUMER_GROUP_TYPE_CONSUMER = 1
RD_KAFKA_CONSUMER_GROUP_TYPE_CLASSIC¶
public RD_KAFKA_CONSUMER_GROUP_TYPE_CLASSIC = 2
RD_KAFKA_CONSUMER_GROUP_TYPE__CNT¶
public RD_KAFKA_CONSUMER_GROUP_TYPE__CNT = 3
RD_KAFKA_ADMIN_OP_ELECTLEADERS¶
public RD_KAFKA_ADMIN_OP_ELECTLEADERS = 22
ElectLeaders
RD_KAFKA_RESOURCE_TRANSACTIONAL_ID¶
public RD_KAFKA_RESOURCE_TRANSACTIONAL_ID = 5
Transactional ID
RD_KAFKA_ELECTION_TYPE_PREFERRED¶
public RD_KAFKA_ELECTION_TYPE_PREFERRED = 0
Preferred Replica Election
RD_KAFKA_ELECTION_TYPE_UNCLEAN¶
public RD_KAFKA_ELECTION_TYPE_UNCLEAN = 1
Unclean Election
RD_KAFKA_SUPPORTED_METHODS¶
public RD_KAFKA_SUPPORTED_METHODS = ['rd_kafka_version' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_version_str' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_get_debug_contexts' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_get_err_descs' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_err2str' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_err2name' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_last_error' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_errno2err' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_errno' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_fatal_error' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_test_fatal_error' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_list_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_list_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_list_add' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_list_add_range' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_list_del' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_list_del_by_idx' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_list_copy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_list_set_offset' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_list_find' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_list_sort' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_headers_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_headers_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_headers_copy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_header_add' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_header_remove' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_header_get_last' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_header_get' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_header_get_all' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_message_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_message_timestamp' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_message_latency' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_message_headers' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_message_detach_headers' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_message_set_headers' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_header_cnt' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_message_status' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_dup' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_dup_filter' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_events' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_background_event_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_dr_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_dr_msg_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_consume_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_rebalance_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_offset_commit_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_error_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_throttle_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_log_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_stats_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_socket_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_connect_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_closesocket_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_opaque' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_opaque' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_default_topic_conf' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_get' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_conf_get' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_dump' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_conf_dump' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_dump_free' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_properties_show' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_conf_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_conf_dup' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_default_topic_conf_dup' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_conf_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_conf_set' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_conf_set_opaque' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_conf_set_partitioner_cb' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_conf_set_msg_order_cmp' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_available' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_msg_partitioner_random' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_msg_partitioner_consistent' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_msg_partitioner_consistent_random' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_msg_partitioner_murmur2' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_msg_partitioner_murmur2_random' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_destroy_flags' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_name' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_type' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_memberid' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_clusterid' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_controllerid' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_name' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_opaque' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_poll' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_yield' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_pause_partitions' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_resume_partitions' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_query_watermark_offsets' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_get_watermark_offsets' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_offsets_for_times' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_mem_free' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_get_main' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_get_consumer' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_get_partition' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_get_background' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_forward' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_set_log_queue' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_length' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_io_event_enable' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_cb_event_enable' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consume_start' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consume_start_queue' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consume_stop' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_seek' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consume' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consume_batch' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consume_callback' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consume_queue' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consume_batch_queue' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consume_callback_queue' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_offset_store' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_offsets_store' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_subscribe' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_unsubscribe' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_subscription' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consumer_poll' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_consumer_close' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_assign' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_assignment' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_commit' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_commit_message' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_commit_queue' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_committed' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_position' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_produce' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_producev' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_produce_batch' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_flush' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_purge' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_metadata' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_metadata_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_list_groups' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_group_list_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_brokers_add' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_set_logger' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_set_log_level' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_log_print' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_log_syslog' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_outq_len' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_dump' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_thread_cnt' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_wait_destroyed' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_unittest' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_poll_set_consumer' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_type' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_name' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_message_next' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_message_array' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_message_count' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_error' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_error_string' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_error_is_fatal' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_opaque' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_log' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_stats' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_topic_partition_list' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_topic_partition' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_CreateTopics_result' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_DeleteTopics_result' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_CreatePartitions_result' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_AlterConfigs_result' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_event_DescribeConfigs_result' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_poll' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_queue_poll_callback' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_plugin_f_conf_init_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_conf_set_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_conf_dup_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_conf_destroy_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_new_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_destroy_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_send_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_acknowledgement_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_consume_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_commit_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_request_sent_t' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_interceptor_add_on_conf_set' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_interceptor_add_on_conf_dup' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_interceptor_add_on_conf_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf_interceptor_add_on_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_add_on_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_add_on_send' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_add_on_acknowledgement' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_add_on_consume' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_add_on_commit' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_add_on_request_sent' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_result_error' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_result_error_string' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_result_name' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_set_request_timeout' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_set_operation_timeout' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_set_validate_only' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_set_broker' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_set_opaque' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_NewTopic_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_NewTopic_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_NewTopic_destroy_array' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_NewTopic_set_replica_assignment' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_NewTopic_set_config' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_CreateTopics' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_CreateTopics_result_topics' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_DeleteTopic_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_DeleteTopic_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_DeleteTopic_destroy_array' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_DeleteTopics' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_DeleteTopics_result_topics' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_NewPartitions_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_NewPartitions_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_NewPartitions_destroy_array' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_NewPartitions_set_replica_assignment' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_CreatePartitions' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_CreatePartitions_result_topics' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigSource_name' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigEntry_name' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigEntry_value' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigEntry_source' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigEntry_is_read_only' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigEntry_is_default' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigEntry_is_sensitive' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigEntry_is_synonym' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigEntry_synonyms' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ResourceType_name' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigResource_new' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigResource_destroy' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigResource_destroy_array' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigResource_set_config' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigResource_configs' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigResource_type' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigResource_name' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigResource_error' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_ConfigResource_error_string' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_AlterConfigs' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_AlterConfigs_result_resources' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_DescribeConfigs' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_DescribeConfigs_result_resources' => ['min' => '1.0.0', 'max' => '2.6.0'], 'rd_kafka_conf' => ['min' => '1.1.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_oauthbearer_token_refresh_cb' => ['min' => '1.1.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_ssl_cert_verify_cb' => ['min' => '1.1.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_ssl_cert' => ['min' => '1.1.0', 'max' => '2.6.0'], 'rd_kafka_event_config_string' => ['min' => '1.1.0', 'max' => '2.6.0'], 'rd_kafka_oauthbearer_set_token' => ['min' => '1.1.0', 'max' => '2.6.0'], 'rd_kafka_oauthbearer_set_token_failure' => ['min' => '1.1.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_thread_start_t' => ['min' => '1.2.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_thread_exit_t' => ['min' => '1.2.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_add_on_thread_start' => ['min' => '1.2.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_add_on_thread_exit' => ['min' => '1.2.0', 'max' => '2.6.0'], 'rd_kafka_mock_cluster_new' => ['min' => '1.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_cluster_destroy' => ['min' => '1.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_cluster_handle' => ['min' => '1.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_cluster_bootstraps' => ['min' => '1.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_push_request_errors' => ['min' => '1.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_topic_set_error' => ['min' => '1.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_partition_set_leader' => ['min' => '1.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_partition_set_follower' => ['min' => '1.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_partition_set_follower_wmarks' => ['min' => '1.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_broker_set_rack' => ['min' => '1.3.0', 'max' => '2.6.0'], 'rd_kafka_error_code' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_error_name' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_error_string' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_error_is_fatal' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_error_is_retriable' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_error_txn_requires_abort' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_error_destroy' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_error_new' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_msg_partitioner_fnv1a' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_msg_partitioner_fnv1a_random' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_metadata' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_metadata_new' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_metadata_destroy' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_metadata_write' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_metadata_read' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_init_transactions' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_begin_transaction' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_send_offsets_to_transaction' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_commit_transaction' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_abort_transaction' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_handle_mock_cluster' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_mock_topic_create' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_mock_broker_set_down' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_mock_broker_set_up' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_mock_coordinator_set' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_mock_set_apiversion' => ['min' => '1.4.0', 'max' => '2.6.0'], 'rd_kafka_mock_broker_set_rtt' => ['min' => '1.4.4', 'max' => '2.6.0'], 'rd_kafka_message_errstr' => ['min' => '1.5.0', 'max' => '2.6.0'], 'rd_kafka_message_broker_id' => ['min' => '1.5.0', 'max' => '2.6.0'], 'rd_kafka_produceva' => ['min' => '1.5.0', 'max' => '2.6.0'], 'rd_kafka_event_debug_contexts' => ['min' => '1.5.0', 'max' => '2.6.0'], 'rd_kafka_mock_broker_push_request_errors' => ['min' => '1.5.0', 'max' => '1.6.2'], 'rd_kafka_conf_get_default_topic_conf' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_queue_yield' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_seek_partitions' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_incremental_assign' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_incremental_unassign' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_rebalance_protocol' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_assignment_lost' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_metadata_new_with_genid' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_event_DeleteRecords_result' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_event_DeleteGroups_result' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_event_DeleteConsumerGroupOffsets_result' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_group_result_error' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_group_result_name' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_group_result_partitions' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteRecords_new' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteRecords_destroy' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteRecords_destroy_array' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteRecords' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteRecords_result_offsets' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteGroup_new' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteGroup_destroy' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteGroup_destroy_array' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteGroups' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteGroups_result_groups' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteConsumerGroupOffsets_new' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteConsumerGroupOffsets_destroy' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteConsumerGroupOffsets_destroy_array' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteConsumerGroupOffsets' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_DeleteConsumerGroupOffsets_result_groups' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_mock_clear_request_errors' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_mock_push_request_errors_array' => ['min' => '1.6.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_response_received_t' => ['min' => '1.6.1', 'max' => '2.6.0'], 'rd_kafka_interceptor_add_on_response_received' => ['min' => '1.6.1', 'max' => '2.6.0'], 'rd_kafka_conf_set_engine_callback_data' => ['min' => '1.7.0', 'max' => '2.6.0'], 'rd_kafka_mem_calloc' => ['min' => '1.7.0', 'max' => '2.6.0'], 'rd_kafka_mem_malloc' => ['min' => '1.7.0', 'max' => '2.6.0'], 'rd_kafka_mock_broker_push_request_error_rtts' => ['min' => '1.7.0', 'max' => '2.6.0'], 'rd_kafka_conf_enable_sasl_queue' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_queue_get_sasl' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_sasl_background_callbacks_enable' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_consumer_close_queue' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_consumer_closed' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_event_CreateAcls_result' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_event_DescribeAcls_result' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_event_DeleteAcls_result' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_ResourcePatternType_name' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_acl_result_error' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclOperation_name' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclPermissionType_name' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_new' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBindingFilter_new' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_restype' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_name' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_principal' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_host' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_operation' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_permission_type' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_resource_pattern_type' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_error' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_destroy' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_AclBinding_destroy_array' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_CreateAcls_result_acls' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_CreateAcls' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_DescribeAcls_result_acls' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_DescribeAcls' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_DeleteAcls_result_responses' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_DeleteAcls_result_response_error' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_DeleteAcls_result_response_matching_acls' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_DeleteAcls' => ['min' => '1.9.0', 'max' => '2.6.0'], 'rd_kafka_conf_set_resolve_cb' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_sasl_set_credentials' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_Node_id' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_Node_host' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_Node_port' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_state_name' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_state_code' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_event_ListConsumerGroups_result' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_event_DescribeConsumerGroups_result' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_event_AlterConsumerGroupOffsets_result' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_event_ListConsumerGroupOffsets_result' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_f_on_broker_state_change_t' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_interceptor_add_on_broker_state_change' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_set_require_stable_offsets' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_set_match_consumer_group_states' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ListConsumerGroups' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupListing_group_id' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupListing_is_simple_consumer_group' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupListing_state' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ListConsumerGroups_result_valid' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ListConsumerGroups_result_errors' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_DescribeConsumerGroups' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_DescribeConsumerGroups_result_groups' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupDescription_group_id' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupDescription_error' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupDescription_is_simple_consumer_group' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupDescription_partition_assignor' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupDescription_state' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupDescription_coordinator' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupDescription_member_count' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupDescription_member' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_MemberDescription_client_id' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_MemberDescription_group_instance_id' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_MemberDescription_consumer_id' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_MemberDescription_host' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_MemberDescription_assignment' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_MemberAssignment_partitions' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ListConsumerGroupOffsets_new' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ListConsumerGroupOffsets_destroy' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ListConsumerGroupOffsets_destroy_array' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ListConsumerGroupOffsets' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_ListConsumerGroupOffsets_result_groups' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_AlterConsumerGroupOffsets_new' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_AlterConsumerGroupOffsets_destroy' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_AlterConsumerGroupOffsets_destroy_array' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_AlterConsumerGroupOffsets' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_AlterConsumerGroupOffsets_result_groups' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_mock_broker_error_stack_cnt' => ['min' => '2.0.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_set_leader_epoch' => ['min' => '2.1.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_get_leader_epoch' => ['min' => '2.1.0', 'max' => '2.6.0'], 'rd_kafka_message_leader_epoch' => ['min' => '2.1.0', 'max' => '2.6.0'], 'rd_kafka_offset_store_message' => ['min' => '2.1.0', 'max' => '2.6.0'], 'rd_kafka_event_IncrementalAlterConfigs_result' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_event_DescribeUserScramCredentials_result' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_event_AlterUserScramCredentials_result' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_ConfigResource_add_incremental_config' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_IncrementalAlterConfigs' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_IncrementalAlterConfigs_result_resources' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_ScramCredentialInfo_mechanism' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_ScramCredentialInfo_iterations' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_UserScramCredentialsDescription_user' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_UserScramCredentialsDescription_error' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_UserScramCredentialsDescription_scramcredentialinfo_count' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_UserScramCredentialsDescription_scramcredentialinfo' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_DescribeUserScramCredentials_result_descriptions' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_DescribeUserScramCredentials' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_UserScramCredentialUpsertion_new' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_UserScramCredentialDeletion_new' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_UserScramCredentialAlteration_destroy' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_UserScramCredentialAlteration_destroy_array' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_AlterUserScramCredentials_result_response_user' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_AlterUserScramCredentials_result_response_error' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_AlterUserScramCredentials_result_responses' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_AlterUserScramCredentials' => ['min' => '2.2.0', 'max' => '2.6.0'], 'rd_kafka_Uuid_base64str' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_Uuid_least_significant_bits' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_Uuid_most_significant_bits' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_Uuid_new' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_Uuid_copy' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_Uuid_destroy' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_Node_rack' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_event_DescribeTopics_result' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_event_DescribeCluster_result' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_event_ListOffsets_result' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_set_include_authorized_operations' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_set_isolation_level' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicCollection_of_topic_names' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicCollection_destroy' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_DescribeTopics' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_DescribeTopics_result_topics' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicDescription_partitions' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicPartitionInfo_partition' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicPartitionInfo_leader' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicPartitionInfo_isr' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicPartitionInfo_replicas' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicDescription_authorized_operations' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicDescription_name' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicDescription_topic_id' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicDescription_is_internal' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_TopicDescription_error' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_DescribeCluster' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_DescribeCluster_result_nodes' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_DescribeCluster_result_authorized_operations' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_DescribeCluster_result_controller' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_DescribeCluster_result_cluster_id' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupDescription_authorized_operations' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_ListOffsetsResultInfo_topic_partition' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_ListOffsetsResultInfo_timestamp' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_ListOffsets_result_infos' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_ListOffsets' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_start_request_tracking' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_stop_request_tracking' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_request_destroy' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_request_id' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_request_api_key' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_request_timestamp' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_get_requests' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_mock_clear_requests' => ['min' => '2.3.0', 'max' => '2.6.0'], 'rd_kafka_message_produce_errstr' => ['min' => '2.4.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_metadata_member_id' => ['min' => '2.4.0', 'max' => '2.6.0'], 'rd_kafka_mock_partition_push_leader_response' => ['min' => '2.4.0', 'max' => '2.6.0'], 'rd_kafka_mock_request_destroy_array' => ['min' => '2.4.0', 'max' => '2.6.0'], 'rd_kafka_mock_telemetry_set_requested_metrics' => ['min' => '2.5.0', 'max' => '2.6.0'], 'rd_kafka_mock_telemetry_set_push_interval' => ['min' => '2.5.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_type_name' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_consumer_group_type_code' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_event_ElectLeaders_result' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_result_partition' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_topic_partition_result_error' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_AdminOptions_set_match_consumer_group_types' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_ConsumerGroupListing_type' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_ElectLeaders_new' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_ElectLeaders_destroy' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_ElectLeaders' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_ElectLeaders_result_partitions' => ['min' => '2.6.0', 'max' => '2.6.0'], 'rd_kafka_mock_group_initial_rebalance_delay_ms' => ['min' => '2.6.0', 'max' => '2.6.0']]
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 16777471
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 74
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 75
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 74,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *opaque), void *opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *opaque), void *opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque), void *opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque), void *opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque), void *opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 16777727
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 82
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *opaque), void *opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *opaque), void *opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque), void *opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque), void *opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque), void *opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 16843007
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 82
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *opaque), void *opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *opaque), void *opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque), void *opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque), void *opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque), void *opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 16908543
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 82
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 16908799
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 82
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 16909055
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 82
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_GROUP_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_GROUP_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR_FOR_GROUP = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 16974079
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 82
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17039615
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 83
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17040127
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 83
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17040639
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 83
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17105151
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 83
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17105663
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 89
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17105919
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 89
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 6
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17170687
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 9
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17170943
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 9
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17171199
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 9
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17236223
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 9
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17301759
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 9
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17302271
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 9
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17367295
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 12
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17367551
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 12
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 17367807
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 12
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33554687
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 16
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33554687
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 16
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33555199
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 16
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33620223
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 16
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__LOG_TRUNCATION = (- 139),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
void rd_kafka_topic_partition_set_leader_epoch(rd_kafka_topic_partition_t *rktpar, int32_t leader_epoch);
int32_t rd_kafka_topic_partition_get_leader_epoch(const rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_leader_epoch(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_error_t *rd_kafka_offset_store_message(rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33620479
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 16
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__LOG_TRUNCATION = (- 139),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
void rd_kafka_topic_partition_set_leader_epoch(rd_kafka_topic_partition_t *rktpar, int32_t leader_epoch);
int32_t rd_kafka_topic_partition_get_leader_epoch(const rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_leader_epoch(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_error_t *rd_kafka_offset_store_message(rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33685759
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 19
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__LOG_TRUNCATION = (- 139),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
void rd_kafka_topic_partition_set_leader_epoch(rd_kafka_topic_partition_t *rktpar, int32_t leader_epoch);
int32_t rd_kafka_topic_partition_get_leader_epoch(const rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_leader_epoch(const rd_kafka_message_t *rkmessage);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_error_t *rd_kafka_offset_store_message(rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_IncrementalAlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_AlterUserScramCredentials_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_IncrementalAlterConfigs_result_t *rd_kafka_event_IncrementalAlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeUserScramCredentials_result_t *rd_kafka_event_DescribeUserScramCredentials_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterUserScramCredentials_result_t *rd_kafka_event_AlterUserScramCredentials_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_INCREMENTALALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBEUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_ALTERUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
typedef enum rd_kafka_AlterConfigOpType_t {
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SET = 0,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_DELETE = 1,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_APPEND = 2,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SUBTRACT = 3,
RD_KAFKA_ALTER_CONFIG_OP_TYPE__CNT,
} rd_kafka_AlterConfigOpType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
rd_kafka_error_t *rd_kafka_ConfigResource_add_incremental_config(rd_kafka_ConfigResource_t *config, const char *name, rd_kafka_AlterConfigOpType_t op_type, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_IncrementalAlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_IncrementalAlterConfigs_result_resources(const rd_kafka_IncrementalAlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef enum rd_kafka_ScramMechanism_t {
RD_KAFKA_SCRAM_MECHANISM_UNKNOWN = 0,
RD_KAFKA_SCRAM_MECHANISM_SHA_256 = 1,
RD_KAFKA_SCRAM_MECHANISM_SHA_512 = 2,
RD_KAFKA_SCRAM_MECHANISM__CNT,
} rd_kafka_ScramMechanism_t;
typedef struct rd_kafka_ScramCredentialInfo_s rd_kafka_ScramCredentialInfo_t;
rd_kafka_ScramMechanism_t rd_kafka_ScramCredentialInfo_mechanism(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
int32_t rd_kafka_ScramCredentialInfo_iterations(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
typedef struct rd_kafka_UserScramCredentialsDescription_s rd_kafka_UserScramCredentialsDescription_t;
const char *rd_kafka_UserScramCredentialsDescription_user(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_error_t *rd_kafka_UserScramCredentialsDescription_error(const rd_kafka_UserScramCredentialsDescription_t *description);
size_t rd_kafka_UserScramCredentialsDescription_scramcredentialinfo_count(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_ScramCredentialInfo_t *rd_kafka_UserScramCredentialsDescription_scramcredentialinfo(const rd_kafka_UserScramCredentialsDescription_t *description, size_t idx);
const rd_kafka_UserScramCredentialsDescription_t **rd_kafka_DescribeUserScramCredentials_result_descriptions(const rd_kafka_DescribeUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_DescribeUserScramCredentials(rd_kafka_t *rk, const char **users, size_t user_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_UserScramCredentialAlteration_s rd_kafka_UserScramCredentialAlteration_t;
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialUpsertion_new(const char *username, rd_kafka_ScramMechanism_t mechanism, int32_t iterations, const unsigned char *password, size_t password_size, const unsigned char *salt, size_t salt_size);
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialDeletion_new(const char *username, rd_kafka_ScramMechanism_t mechanism);
void rd_kafka_UserScramCredentialAlteration_destroy(rd_kafka_UserScramCredentialAlteration_t *alteration);
void rd_kafka_UserScramCredentialAlteration_destroy_array(rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt);
typedef struct rd_kafka_AlterUserScramCredentials_result_response_s rd_kafka_AlterUserScramCredentials_result_response_t;
const char *rd_kafka_AlterUserScramCredentials_result_response_user(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_error_t *rd_kafka_AlterUserScramCredentials_result_response_error(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_AlterUserScramCredentials_result_response_t **rd_kafka_AlterUserScramCredentials_result_responses(const rd_kafka_AlterUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_AlterUserScramCredentials(rd_kafka_t *rk, rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33751295
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 98
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 22
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef struct rd_kafka_Uuid_s rd_kafka_Uuid_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__LOG_TRUNCATION = (- 139),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
void rd_kafka_topic_partition_set_leader_epoch(rd_kafka_topic_partition_t *rktpar, int32_t leader_epoch);
int32_t rd_kafka_topic_partition_get_leader_epoch(const rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_leader_epoch(const rd_kafka_message_t *rkmessage);
const char *rd_kafka_Uuid_base64str(const rd_kafka_Uuid_t *uuid);
int64_t rd_kafka_Uuid_least_significant_bits(const rd_kafka_Uuid_t *uuid);
int64_t rd_kafka_Uuid_most_significant_bits(const rd_kafka_Uuid_t *uuid);
rd_kafka_Uuid_t *rd_kafka_Uuid_new(int64_t most_significant_bits, int64_t least_significant_bits);
rd_kafka_Uuid_t *rd_kafka_Uuid_copy(const rd_kafka_Uuid_t *uuid);
void rd_kafka_Uuid_destroy(rd_kafka_Uuid_t *uuid);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_error_t *rd_kafka_offset_store_message(rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_rack(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_IncrementalAlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeCluster_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_AlterUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_ListOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_IncrementalAlterConfigs_result_t *rd_kafka_event_IncrementalAlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeTopics_result_t *rd_kafka_event_DescribeTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeCluster_result_t *rd_kafka_event_DescribeCluster_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_ListOffsets_result_t *rd_kafka_event_ListOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeUserScramCredentials_result_t *rd_kafka_event_DescribeUserScramCredentials_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterUserScramCredentials_result_t *rd_kafka_event_AlterUserScramCredentials_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_INCREMENTALALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBEUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_ALTERUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_DESCRIBETOPICS,
RD_KAFKA_ADMIN_OP_DESCRIBECLUSTER,
RD_KAFKA_ADMIN_OP_LISTOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
typedef enum rd_kafka_IsolationLevel_t {
RD_KAFKA_ISOLATION_LEVEL_READ_UNCOMMITTED = 0,
RD_KAFKA_ISOLATION_LEVEL_READ_COMMITTED = 1,
} rd_kafka_IsolationLevel_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_include_authorized_operations(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
rd_kafka_error_t *rd_kafka_AdminOptions_set_isolation_level(rd_kafka_AdminOptions_t *options, rd_kafka_IsolationLevel_t value);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
typedef enum rd_kafka_AlterConfigOpType_t {
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SET = 0,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_DELETE = 1,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_APPEND = 2,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SUBTRACT = 3,
RD_KAFKA_ALTER_CONFIG_OP_TYPE__CNT,
} rd_kafka_AlterConfigOpType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
rd_kafka_error_t *rd_kafka_ConfigResource_add_incremental_config(rd_kafka_ConfigResource_t *config, const char *name, rd_kafka_AlterConfigOpType_t op_type, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_IncrementalAlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_IncrementalAlterConfigs_result_resources(const rd_kafka_IncrementalAlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_TopicCollection_s rd_kafka_TopicCollection_t;
typedef struct rd_kafka_TopicPartitionInfo_s rd_kafka_TopicPartitionInfo_t;
typedef struct rd_kafka_TopicDescription_s rd_kafka_TopicDescription_t;
rd_kafka_TopicCollection_t *rd_kafka_TopicCollection_of_topic_names(const char **topics, size_t topics_cnt);
void rd_kafka_TopicCollection_destroy(rd_kafka_TopicCollection_t *topics);
void rd_kafka_DescribeTopics(rd_kafka_t *rk, const rd_kafka_TopicCollection_t *topics, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_TopicDescription_t **rd_kafka_DescribeTopics_result_topics(const rd_kafka_DescribeTopics_result_t *result, size_t *cntp);
const rd_kafka_TopicPartitionInfo_t **rd_kafka_TopicDescription_partitions(const rd_kafka_TopicDescription_t *topicdesc, size_t *cntp);
const int rd_kafka_TopicPartitionInfo_partition(const rd_kafka_TopicPartitionInfo_t *partition);
const rd_kafka_Node_t *rd_kafka_TopicPartitionInfo_leader(const rd_kafka_TopicPartitionInfo_t *partition);
const rd_kafka_Node_t **rd_kafka_TopicPartitionInfo_isr(const rd_kafka_TopicPartitionInfo_t *partition, size_t *cntp);
const rd_kafka_Node_t **rd_kafka_TopicPartitionInfo_replicas(const rd_kafka_TopicPartitionInfo_t *partition, size_t *cntp);
const rd_kafka_AclOperation_t *rd_kafka_TopicDescription_authorized_operations(const rd_kafka_TopicDescription_t *topicdesc, size_t *cntp);
const char *rd_kafka_TopicDescription_name(const rd_kafka_TopicDescription_t *topicdesc);
const rd_kafka_Uuid_t *rd_kafka_TopicDescription_topic_id(const rd_kafka_TopicDescription_t *topicdesc);
int rd_kafka_TopicDescription_is_internal(const rd_kafka_TopicDescription_t *topicdesc);
const rd_kafka_error_t *rd_kafka_TopicDescription_error(const rd_kafka_TopicDescription_t *topicdesc);
void rd_kafka_DescribeCluster(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_Node_t **rd_kafka_DescribeCluster_result_nodes(const rd_kafka_DescribeCluster_result_t *result, size_t *cntp);
const rd_kafka_AclOperation_t *rd_kafka_DescribeCluster_result_authorized_operations(const rd_kafka_DescribeCluster_result_t *result, size_t *cntp);
const rd_kafka_Node_t *rd_kafka_DescribeCluster_result_controller(const rd_kafka_DescribeCluster_result_t *result);
const char *rd_kafka_DescribeCluster_result_cluster_id(const rd_kafka_DescribeCluster_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_AclOperation_t *rd_kafka_ConsumerGroupDescription_authorized_operations(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t *cntp);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef enum rd_kafka_OffsetSpec_t {
RD_KAFKA_OFFSET_SPEC_MAX_TIMESTAMP = (- 3),
RD_KAFKA_OFFSET_SPEC_EARLIEST = (- 2),
RD_KAFKA_OFFSET_SPEC_LATEST = (- 1),
} rd_kafka_OffsetSpec_t;
typedef struct rd_kafka_ListOffsetsResultInfo_s rd_kafka_ListOffsetsResultInfo_t;
const rd_kafka_topic_partition_t *rd_kafka_ListOffsetsResultInfo_topic_partition(const rd_kafka_ListOffsetsResultInfo_t *result_info);
int64_t rd_kafka_ListOffsetsResultInfo_timestamp(const rd_kafka_ListOffsetsResultInfo_t *result_info);
const rd_kafka_ListOffsetsResultInfo_t **rd_kafka_ListOffsets_result_infos(const rd_kafka_ListOffsets_result_t *result, size_t *cntp);
void rd_kafka_ListOffsets(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *topic_partitions, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef enum rd_kafka_ScramMechanism_t {
RD_KAFKA_SCRAM_MECHANISM_UNKNOWN = 0,
RD_KAFKA_SCRAM_MECHANISM_SHA_256 = 1,
RD_KAFKA_SCRAM_MECHANISM_SHA_512 = 2,
RD_KAFKA_SCRAM_MECHANISM__CNT,
} rd_kafka_ScramMechanism_t;
typedef struct rd_kafka_ScramCredentialInfo_s rd_kafka_ScramCredentialInfo_t;
rd_kafka_ScramMechanism_t rd_kafka_ScramCredentialInfo_mechanism(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
int32_t rd_kafka_ScramCredentialInfo_iterations(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
typedef struct rd_kafka_UserScramCredentialsDescription_s rd_kafka_UserScramCredentialsDescription_t;
const char *rd_kafka_UserScramCredentialsDescription_user(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_error_t *rd_kafka_UserScramCredentialsDescription_error(const rd_kafka_UserScramCredentialsDescription_t *description);
size_t rd_kafka_UserScramCredentialsDescription_scramcredentialinfo_count(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_ScramCredentialInfo_t *rd_kafka_UserScramCredentialsDescription_scramcredentialinfo(const rd_kafka_UserScramCredentialsDescription_t *description, size_t idx);
const rd_kafka_UserScramCredentialsDescription_t **rd_kafka_DescribeUserScramCredentials_result_descriptions(const rd_kafka_DescribeUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_DescribeUserScramCredentials(rd_kafka_t *rk, const char **users, size_t user_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_UserScramCredentialAlteration_s rd_kafka_UserScramCredentialAlteration_t;
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialUpsertion_new(const char *username, rd_kafka_ScramMechanism_t mechanism, int32_t iterations, const unsigned char *password, size_t password_size, const unsigned char *salt, size_t salt_size);
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialDeletion_new(const char *username, rd_kafka_ScramMechanism_t mechanism);
void rd_kafka_UserScramCredentialAlteration_destroy(rd_kafka_UserScramCredentialAlteration_t *alteration);
void rd_kafka_UserScramCredentialAlteration_destroy_array(rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt);
typedef struct rd_kafka_AlterUserScramCredentials_result_response_s rd_kafka_AlterUserScramCredentials_result_response_t;
const char *rd_kafka_AlterUserScramCredentials_result_response_user(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_error_t *rd_kafka_AlterUserScramCredentials_result_response_error(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_AlterUserScramCredentials_result_response_t **rd_kafka_AlterUserScramCredentials_result_responses(const rd_kafka_AlterUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_AlterUserScramCredentials(rd_kafka_t *rk, rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
void rd_kafka_mock_start_request_tracking(rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_stop_request_tracking(rd_kafka_mock_cluster_t *mcluster);
typedef struct rd_kafka_mock_request_s rd_kafka_mock_request_t;
void rd_kafka_mock_request_destroy(rd_kafka_mock_request_t *mreq);
int32_t rd_kafka_mock_request_id(rd_kafka_mock_request_t *mreq);
int16_t rd_kafka_mock_request_api_key(rd_kafka_mock_request_t *mreq);
int64_t rd_kafka_mock_request_timestamp(rd_kafka_mock_request_t *mreq);
rd_kafka_mock_request_t **rd_kafka_mock_get_requests(rd_kafka_mock_cluster_t *mcluster, size_t *cntp);
void rd_kafka_mock_clear_requests(rd_kafka_mock_cluster_t *mcluster);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33816831
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 114
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 22
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef struct rd_kafka_Uuid_s rd_kafka_Uuid_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__LOG_TRUNCATION = (- 139),
RD_KAFKA_RESP_ERR__INVALID_DIFFERENT_RECORD = (- 138),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_ID = 100,
RD_KAFKA_RESP_ERR_FENCED_MEMBER_EPOCH = 110,
RD_KAFKA_RESP_ERR_UNRELEASED_INSTANCE_ID = 111,
RD_KAFKA_RESP_ERR_UNSUPPORTED_ASSIGNOR = 112,
RD_KAFKA_RESP_ERR_STALE_MEMBER_EPOCH = 113,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
void rd_kafka_topic_partition_set_leader_epoch(rd_kafka_topic_partition_t *rktpar, int32_t leader_epoch);
int32_t rd_kafka_topic_partition_get_leader_epoch(const rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_produce_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_leader_epoch(const rd_kafka_message_t *rkmessage);
const char *rd_kafka_Uuid_base64str(const rd_kafka_Uuid_t *uuid);
int64_t rd_kafka_Uuid_least_significant_bits(const rd_kafka_Uuid_t *uuid);
int64_t rd_kafka_Uuid_most_significant_bits(const rd_kafka_Uuid_t *uuid);
rd_kafka_Uuid_t *rd_kafka_Uuid_new(int64_t most_significant_bits, int64_t least_significant_bits);
rd_kafka_Uuid_t *rd_kafka_Uuid_copy(const rd_kafka_Uuid_t *uuid);
void rd_kafka_Uuid_destroy(rd_kafka_Uuid_t *uuid);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_error_t *rd_kafka_offset_store_message(rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
const char *rd_kafka_consumer_group_metadata_member_id(const rd_kafka_consumer_group_metadata_t *group_metadata);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_rack(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_IncrementalAlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeCluster_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_AlterUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_ListOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_IncrementalAlterConfigs_result_t *rd_kafka_event_IncrementalAlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeTopics_result_t *rd_kafka_event_DescribeTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeCluster_result_t *rd_kafka_event_DescribeCluster_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_ListOffsets_result_t *rd_kafka_event_ListOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeUserScramCredentials_result_t *rd_kafka_event_DescribeUserScramCredentials_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterUserScramCredentials_result_t *rd_kafka_event_AlterUserScramCredentials_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_INCREMENTALALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBEUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_ALTERUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_DESCRIBETOPICS,
RD_KAFKA_ADMIN_OP_DESCRIBECLUSTER,
RD_KAFKA_ADMIN_OP_LISTOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
typedef enum rd_kafka_IsolationLevel_t {
RD_KAFKA_ISOLATION_LEVEL_READ_UNCOMMITTED = 0,
RD_KAFKA_ISOLATION_LEVEL_READ_COMMITTED = 1,
} rd_kafka_IsolationLevel_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_include_authorized_operations(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
rd_kafka_error_t *rd_kafka_AdminOptions_set_isolation_level(rd_kafka_AdminOptions_t *options, rd_kafka_IsolationLevel_t value);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
typedef enum rd_kafka_AlterConfigOpType_t {
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SET = 0,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_DELETE = 1,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_APPEND = 2,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SUBTRACT = 3,
RD_KAFKA_ALTER_CONFIG_OP_TYPE__CNT,
} rd_kafka_AlterConfigOpType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
rd_kafka_error_t *rd_kafka_ConfigResource_add_incremental_config(rd_kafka_ConfigResource_t *config, const char *name, rd_kafka_AlterConfigOpType_t op_type, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_IncrementalAlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_IncrementalAlterConfigs_result_resources(const rd_kafka_IncrementalAlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_TopicCollection_s rd_kafka_TopicCollection_t;
typedef struct rd_kafka_TopicPartitionInfo_s rd_kafka_TopicPartitionInfo_t;
typedef struct rd_kafka_TopicDescription_s rd_kafka_TopicDescription_t;
rd_kafka_TopicCollection_t *rd_kafka_TopicCollection_of_topic_names(const char **topics, size_t topics_cnt);
void rd_kafka_TopicCollection_destroy(rd_kafka_TopicCollection_t *topics);
void rd_kafka_DescribeTopics(rd_kafka_t *rk, const rd_kafka_TopicCollection_t *topics, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_TopicDescription_t **rd_kafka_DescribeTopics_result_topics(const rd_kafka_DescribeTopics_result_t *result, size_t *cntp);
const rd_kafka_TopicPartitionInfo_t **rd_kafka_TopicDescription_partitions(const rd_kafka_TopicDescription_t *topicdesc, size_t *cntp);
const int rd_kafka_TopicPartitionInfo_partition(const rd_kafka_TopicPartitionInfo_t *partition);
const rd_kafka_Node_t *rd_kafka_TopicPartitionInfo_leader(const rd_kafka_TopicPartitionInfo_t *partition);
const rd_kafka_Node_t **rd_kafka_TopicPartitionInfo_isr(const rd_kafka_TopicPartitionInfo_t *partition, size_t *cntp);
const rd_kafka_Node_t **rd_kafka_TopicPartitionInfo_replicas(const rd_kafka_TopicPartitionInfo_t *partition, size_t *cntp);
const rd_kafka_AclOperation_t *rd_kafka_TopicDescription_authorized_operations(const rd_kafka_TopicDescription_t *topicdesc, size_t *cntp);
const char *rd_kafka_TopicDescription_name(const rd_kafka_TopicDescription_t *topicdesc);
const rd_kafka_Uuid_t *rd_kafka_TopicDescription_topic_id(const rd_kafka_TopicDescription_t *topicdesc);
int rd_kafka_TopicDescription_is_internal(const rd_kafka_TopicDescription_t *topicdesc);
const rd_kafka_error_t *rd_kafka_TopicDescription_error(const rd_kafka_TopicDescription_t *topicdesc);
void rd_kafka_DescribeCluster(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_Node_t **rd_kafka_DescribeCluster_result_nodes(const rd_kafka_DescribeCluster_result_t *result, size_t *cntp);
const rd_kafka_AclOperation_t *rd_kafka_DescribeCluster_result_authorized_operations(const rd_kafka_DescribeCluster_result_t *result, size_t *cntp);
const rd_kafka_Node_t *rd_kafka_DescribeCluster_result_controller(const rd_kafka_DescribeCluster_result_t *result);
const char *rd_kafka_DescribeCluster_result_cluster_id(const rd_kafka_DescribeCluster_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_AclOperation_t *rd_kafka_ConsumerGroupDescription_authorized_operations(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t *cntp);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef enum rd_kafka_OffsetSpec_t {
RD_KAFKA_OFFSET_SPEC_MAX_TIMESTAMP = (- 3),
RD_KAFKA_OFFSET_SPEC_EARLIEST = (- 2),
RD_KAFKA_OFFSET_SPEC_LATEST = (- 1),
} rd_kafka_OffsetSpec_t;
typedef struct rd_kafka_ListOffsetsResultInfo_s rd_kafka_ListOffsetsResultInfo_t;
const rd_kafka_topic_partition_t *rd_kafka_ListOffsetsResultInfo_topic_partition(const rd_kafka_ListOffsetsResultInfo_t *result_info);
int64_t rd_kafka_ListOffsetsResultInfo_timestamp(const rd_kafka_ListOffsetsResultInfo_t *result_info);
const rd_kafka_ListOffsetsResultInfo_t **rd_kafka_ListOffsets_result_infos(const rd_kafka_ListOffsets_result_t *result, size_t *cntp);
void rd_kafka_ListOffsets(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *topic_partitions, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef enum rd_kafka_ScramMechanism_t {
RD_KAFKA_SCRAM_MECHANISM_UNKNOWN = 0,
RD_KAFKA_SCRAM_MECHANISM_SHA_256 = 1,
RD_KAFKA_SCRAM_MECHANISM_SHA_512 = 2,
RD_KAFKA_SCRAM_MECHANISM__CNT,
} rd_kafka_ScramMechanism_t;
typedef struct rd_kafka_ScramCredentialInfo_s rd_kafka_ScramCredentialInfo_t;
rd_kafka_ScramMechanism_t rd_kafka_ScramCredentialInfo_mechanism(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
int32_t rd_kafka_ScramCredentialInfo_iterations(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
typedef struct rd_kafka_UserScramCredentialsDescription_s rd_kafka_UserScramCredentialsDescription_t;
const char *rd_kafka_UserScramCredentialsDescription_user(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_error_t *rd_kafka_UserScramCredentialsDescription_error(const rd_kafka_UserScramCredentialsDescription_t *description);
size_t rd_kafka_UserScramCredentialsDescription_scramcredentialinfo_count(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_ScramCredentialInfo_t *rd_kafka_UserScramCredentialsDescription_scramcredentialinfo(const rd_kafka_UserScramCredentialsDescription_t *description, size_t idx);
const rd_kafka_UserScramCredentialsDescription_t **rd_kafka_DescribeUserScramCredentials_result_descriptions(const rd_kafka_DescribeUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_DescribeUserScramCredentials(rd_kafka_t *rk, const char **users, size_t user_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_UserScramCredentialAlteration_s rd_kafka_UserScramCredentialAlteration_t;
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialUpsertion_new(const char *username, rd_kafka_ScramMechanism_t mechanism, int32_t iterations, const unsigned char *password, size_t password_size, const unsigned char *salt, size_t salt_size);
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialDeletion_new(const char *username, rd_kafka_ScramMechanism_t mechanism);
void rd_kafka_UserScramCredentialAlteration_destroy(rd_kafka_UserScramCredentialAlteration_t *alteration);
void rd_kafka_UserScramCredentialAlteration_destroy_array(rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt);
typedef struct rd_kafka_AlterUserScramCredentials_result_response_s rd_kafka_AlterUserScramCredentials_result_response_t;
const char *rd_kafka_AlterUserScramCredentials_result_response_user(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_error_t *rd_kafka_AlterUserScramCredentials_result_response_error(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_AlterUserScramCredentials_result_response_t **rd_kafka_AlterUserScramCredentials_result_responses(const rd_kafka_AlterUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_AlterUserScramCredentials(rd_kafka_t *rk, rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_partition_push_leader_response(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition, int32_t leader_id, int32_t leader_epoch);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
void rd_kafka_mock_start_request_tracking(rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_stop_request_tracking(rd_kafka_mock_cluster_t *mcluster);
typedef struct rd_kafka_mock_request_s rd_kafka_mock_request_t;
void rd_kafka_mock_request_destroy(rd_kafka_mock_request_t *mreq);
void rd_kafka_mock_request_destroy_array(rd_kafka_mock_request_t **mreqs, size_t mreq_cnt);
int32_t rd_kafka_mock_request_id(rd_kafka_mock_request_t *mreq);
int16_t rd_kafka_mock_request_api_key(rd_kafka_mock_request_t *mreq);
int64_t rd_kafka_mock_request_timestamp(rd_kafka_mock_request_t *mreq);
rd_kafka_mock_request_t **rd_kafka_mock_get_requests(rd_kafka_mock_cluster_t *mcluster, size_t *cntp);
void rd_kafka_mock_clear_requests(rd_kafka_mock_cluster_t *mcluster);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33882367
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 119
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 22
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef struct rd_kafka_Uuid_s rd_kafka_Uuid_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__LOG_TRUNCATION = (- 139),
RD_KAFKA_RESP_ERR__INVALID_DIFFERENT_RECORD = (- 138),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_ID = 100,
RD_KAFKA_RESP_ERR_FENCED_MEMBER_EPOCH = 110,
RD_KAFKA_RESP_ERR_UNRELEASED_INSTANCE_ID = 111,
RD_KAFKA_RESP_ERR_UNSUPPORTED_ASSIGNOR = 112,
RD_KAFKA_RESP_ERR_STALE_MEMBER_EPOCH = 113,
RD_KAFKA_RESP_ERR_UNKNOWN_SUBSCRIPTION_ID = 117,
RD_KAFKA_RESP_ERR_TELEMETRY_TOO_LARGE = 118,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
void rd_kafka_topic_partition_set_leader_epoch(rd_kafka_topic_partition_t *rktpar, int32_t leader_epoch);
int32_t rd_kafka_topic_partition_get_leader_epoch(const rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_produce_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_leader_epoch(const rd_kafka_message_t *rkmessage);
const char *rd_kafka_Uuid_base64str(const rd_kafka_Uuid_t *uuid);
int64_t rd_kafka_Uuid_least_significant_bits(const rd_kafka_Uuid_t *uuid);
int64_t rd_kafka_Uuid_most_significant_bits(const rd_kafka_Uuid_t *uuid);
rd_kafka_Uuid_t *rd_kafka_Uuid_new(int64_t most_significant_bits, int64_t least_significant_bits);
rd_kafka_Uuid_t *rd_kafka_Uuid_copy(const rd_kafka_Uuid_t *uuid);
void rd_kafka_Uuid_destroy(rd_kafka_Uuid_t *uuid);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_error_t *rd_kafka_offset_store_message(rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
const char *rd_kafka_consumer_group_metadata_member_id(const rd_kafka_consumer_group_metadata_t *group_metadata);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_rack(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_IncrementalAlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeCluster_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_AlterUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_ListOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_IncrementalAlterConfigs_result_t *rd_kafka_event_IncrementalAlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeTopics_result_t *rd_kafka_event_DescribeTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeCluster_result_t *rd_kafka_event_DescribeCluster_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_ListOffsets_result_t *rd_kafka_event_ListOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeUserScramCredentials_result_t *rd_kafka_event_DescribeUserScramCredentials_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterUserScramCredentials_result_t *rd_kafka_event_AlterUserScramCredentials_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_INCREMENTALALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBEUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_ALTERUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_DESCRIBETOPICS,
RD_KAFKA_ADMIN_OP_DESCRIBECLUSTER,
RD_KAFKA_ADMIN_OP_LISTOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
typedef enum rd_kafka_IsolationLevel_t {
RD_KAFKA_ISOLATION_LEVEL_READ_UNCOMMITTED = 0,
RD_KAFKA_ISOLATION_LEVEL_READ_COMMITTED = 1,
} rd_kafka_IsolationLevel_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_include_authorized_operations(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
rd_kafka_error_t *rd_kafka_AdminOptions_set_isolation_level(rd_kafka_AdminOptions_t *options, rd_kafka_IsolationLevel_t value);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
typedef enum rd_kafka_AlterConfigOpType_t {
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SET = 0,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_DELETE = 1,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_APPEND = 2,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SUBTRACT = 3,
RD_KAFKA_ALTER_CONFIG_OP_TYPE__CNT,
} rd_kafka_AlterConfigOpType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
rd_kafka_error_t *rd_kafka_ConfigResource_add_incremental_config(rd_kafka_ConfigResource_t *config, const char *name, rd_kafka_AlterConfigOpType_t op_type, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_IncrementalAlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_IncrementalAlterConfigs_result_resources(const rd_kafka_IncrementalAlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_TopicCollection_s rd_kafka_TopicCollection_t;
typedef struct rd_kafka_TopicPartitionInfo_s rd_kafka_TopicPartitionInfo_t;
typedef struct rd_kafka_TopicDescription_s rd_kafka_TopicDescription_t;
rd_kafka_TopicCollection_t *rd_kafka_TopicCollection_of_topic_names(const char **topics, size_t topics_cnt);
void rd_kafka_TopicCollection_destroy(rd_kafka_TopicCollection_t *topics);
void rd_kafka_DescribeTopics(rd_kafka_t *rk, const rd_kafka_TopicCollection_t *topics, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_TopicDescription_t **rd_kafka_DescribeTopics_result_topics(const rd_kafka_DescribeTopics_result_t *result, size_t *cntp);
const rd_kafka_TopicPartitionInfo_t **rd_kafka_TopicDescription_partitions(const rd_kafka_TopicDescription_t *topicdesc, size_t *cntp);
const int rd_kafka_TopicPartitionInfo_partition(const rd_kafka_TopicPartitionInfo_t *partition);
const rd_kafka_Node_t *rd_kafka_TopicPartitionInfo_leader(const rd_kafka_TopicPartitionInfo_t *partition);
const rd_kafka_Node_t **rd_kafka_TopicPartitionInfo_isr(const rd_kafka_TopicPartitionInfo_t *partition, size_t *cntp);
const rd_kafka_Node_t **rd_kafka_TopicPartitionInfo_replicas(const rd_kafka_TopicPartitionInfo_t *partition, size_t *cntp);
const rd_kafka_AclOperation_t *rd_kafka_TopicDescription_authorized_operations(const rd_kafka_TopicDescription_t *topicdesc, size_t *cntp);
const char *rd_kafka_TopicDescription_name(const rd_kafka_TopicDescription_t *topicdesc);
const rd_kafka_Uuid_t *rd_kafka_TopicDescription_topic_id(const rd_kafka_TopicDescription_t *topicdesc);
int rd_kafka_TopicDescription_is_internal(const rd_kafka_TopicDescription_t *topicdesc);
const rd_kafka_error_t *rd_kafka_TopicDescription_error(const rd_kafka_TopicDescription_t *topicdesc);
void rd_kafka_DescribeCluster(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_Node_t **rd_kafka_DescribeCluster_result_nodes(const rd_kafka_DescribeCluster_result_t *result, size_t *cntp);
const rd_kafka_AclOperation_t *rd_kafka_DescribeCluster_result_authorized_operations(const rd_kafka_DescribeCluster_result_t *result, size_t *cntp);
const rd_kafka_Node_t *rd_kafka_DescribeCluster_result_controller(const rd_kafka_DescribeCluster_result_t *result);
const char *rd_kafka_DescribeCluster_result_cluster_id(const rd_kafka_DescribeCluster_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_AclOperation_t *rd_kafka_ConsumerGroupDescription_authorized_operations(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t *cntp);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef enum rd_kafka_OffsetSpec_t {
RD_KAFKA_OFFSET_SPEC_MAX_TIMESTAMP = (- 3),
RD_KAFKA_OFFSET_SPEC_EARLIEST = (- 2),
RD_KAFKA_OFFSET_SPEC_LATEST = (- 1),
} rd_kafka_OffsetSpec_t;
typedef struct rd_kafka_ListOffsetsResultInfo_s rd_kafka_ListOffsetsResultInfo_t;
const rd_kafka_topic_partition_t *rd_kafka_ListOffsetsResultInfo_topic_partition(const rd_kafka_ListOffsetsResultInfo_t *result_info);
int64_t rd_kafka_ListOffsetsResultInfo_timestamp(const rd_kafka_ListOffsetsResultInfo_t *result_info);
const rd_kafka_ListOffsetsResultInfo_t **rd_kafka_ListOffsets_result_infos(const rd_kafka_ListOffsets_result_t *result, size_t *cntp);
void rd_kafka_ListOffsets(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *topic_partitions, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef enum rd_kafka_ScramMechanism_t {
RD_KAFKA_SCRAM_MECHANISM_UNKNOWN = 0,
RD_KAFKA_SCRAM_MECHANISM_SHA_256 = 1,
RD_KAFKA_SCRAM_MECHANISM_SHA_512 = 2,
RD_KAFKA_SCRAM_MECHANISM__CNT,
} rd_kafka_ScramMechanism_t;
typedef struct rd_kafka_ScramCredentialInfo_s rd_kafka_ScramCredentialInfo_t;
rd_kafka_ScramMechanism_t rd_kafka_ScramCredentialInfo_mechanism(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
int32_t rd_kafka_ScramCredentialInfo_iterations(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
typedef struct rd_kafka_UserScramCredentialsDescription_s rd_kafka_UserScramCredentialsDescription_t;
const char *rd_kafka_UserScramCredentialsDescription_user(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_error_t *rd_kafka_UserScramCredentialsDescription_error(const rd_kafka_UserScramCredentialsDescription_t *description);
size_t rd_kafka_UserScramCredentialsDescription_scramcredentialinfo_count(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_ScramCredentialInfo_t *rd_kafka_UserScramCredentialsDescription_scramcredentialinfo(const rd_kafka_UserScramCredentialsDescription_t *description, size_t idx);
const rd_kafka_UserScramCredentialsDescription_t **rd_kafka_DescribeUserScramCredentials_result_descriptions(const rd_kafka_DescribeUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_DescribeUserScramCredentials(rd_kafka_t *rk, const char **users, size_t user_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_UserScramCredentialAlteration_s rd_kafka_UserScramCredentialAlteration_t;
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialUpsertion_new(const char *username, rd_kafka_ScramMechanism_t mechanism, int32_t iterations, const unsigned char *password, size_t password_size, const unsigned char *salt, size_t salt_size);
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialDeletion_new(const char *username, rd_kafka_ScramMechanism_t mechanism);
void rd_kafka_UserScramCredentialAlteration_destroy(rd_kafka_UserScramCredentialAlteration_t *alteration);
void rd_kafka_UserScramCredentialAlteration_destroy_array(rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt);
typedef struct rd_kafka_AlterUserScramCredentials_result_response_s rd_kafka_AlterUserScramCredentials_result_response_t;
const char *rd_kafka_AlterUserScramCredentials_result_response_user(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_error_t *rd_kafka_AlterUserScramCredentials_result_response_error(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_AlterUserScramCredentials_result_response_t **rd_kafka_AlterUserScramCredentials_result_responses(const rd_kafka_AlterUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_AlterUserScramCredentials(rd_kafka_t *rk, rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_partition_push_leader_response(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition, int32_t leader_id, int32_t leader_epoch);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
void rd_kafka_mock_start_request_tracking(rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_stop_request_tracking(rd_kafka_mock_cluster_t *mcluster);
typedef struct rd_kafka_mock_request_s rd_kafka_mock_request_t;
void rd_kafka_mock_request_destroy(rd_kafka_mock_request_t *mreq);
void rd_kafka_mock_request_destroy_array(rd_kafka_mock_request_t **mreqs, size_t mreq_cnt);
int32_t rd_kafka_mock_request_id(rd_kafka_mock_request_t *mreq);
int16_t rd_kafka_mock_request_api_key(rd_kafka_mock_request_t *mreq);
int64_t rd_kafka_mock_request_timestamp(rd_kafka_mock_request_t *mreq);
rd_kafka_mock_request_t **rd_kafka_mock_get_requests(rd_kafka_mock_cluster_t *mcluster, size_t *cntp);
void rd_kafka_mock_clear_requests(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_resp_err_t rd_kafka_mock_telemetry_set_requested_metrics(rd_kafka_mock_cluster_t *mcluster, char **metrics, size_t metrics_cnt);
rd_kafka_resp_err_t rd_kafka_mock_telemetry_set_push_interval(rd_kafka_mock_cluster_t *mcluster, int64_t push_interval_ms);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33883135
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 119
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 22
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 5
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef struct rd_kafka_Uuid_s rd_kafka_Uuid_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__LOG_TRUNCATION = (- 139),
RD_KAFKA_RESP_ERR__INVALID_DIFFERENT_RECORD = (- 138),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_ID = 100,
RD_KAFKA_RESP_ERR_FENCED_MEMBER_EPOCH = 110,
RD_KAFKA_RESP_ERR_UNRELEASED_INSTANCE_ID = 111,
RD_KAFKA_RESP_ERR_UNSUPPORTED_ASSIGNOR = 112,
RD_KAFKA_RESP_ERR_STALE_MEMBER_EPOCH = 113,
RD_KAFKA_RESP_ERR_UNKNOWN_SUBSCRIPTION_ID = 117,
RD_KAFKA_RESP_ERR_TELEMETRY_TOO_LARGE = 118,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
void rd_kafka_topic_partition_set_leader_epoch(rd_kafka_topic_partition_t *rktpar, int32_t leader_epoch);
int32_t rd_kafka_topic_partition_get_leader_epoch(const rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_produce_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_leader_epoch(const rd_kafka_message_t *rkmessage);
const char *rd_kafka_Uuid_base64str(const rd_kafka_Uuid_t *uuid);
int64_t rd_kafka_Uuid_least_significant_bits(const rd_kafka_Uuid_t *uuid);
int64_t rd_kafka_Uuid_most_significant_bits(const rd_kafka_Uuid_t *uuid);
rd_kafka_Uuid_t *rd_kafka_Uuid_new(int64_t most_significant_bits, int64_t least_significant_bits);
rd_kafka_Uuid_t *rd_kafka_Uuid_copy(const rd_kafka_Uuid_t *uuid);
void rd_kafka_Uuid_destroy(rd_kafka_Uuid_t *uuid);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_error_t *rd_kafka_offset_store_message(rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
const char *rd_kafka_consumer_group_metadata_member_id(const rd_kafka_consumer_group_metadata_t *group_metadata);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_rack(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_IncrementalAlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeCluster_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_AlterUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_ListOffsets_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_IncrementalAlterConfigs_result_t *rd_kafka_event_IncrementalAlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeTopics_result_t *rd_kafka_event_DescribeTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeCluster_result_t *rd_kafka_event_DescribeCluster_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_ListOffsets_result_t *rd_kafka_event_ListOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeUserScramCredentials_result_t *rd_kafka_event_DescribeUserScramCredentials_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterUserScramCredentials_result_t *rd_kafka_event_AlterUserScramCredentials_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_INCREMENTALALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBEUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_ALTERUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_DESCRIBETOPICS,
RD_KAFKA_ADMIN_OP_DESCRIBECLUSTER,
RD_KAFKA_ADMIN_OP_LISTOFFSETS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
typedef enum rd_kafka_IsolationLevel_t {
RD_KAFKA_ISOLATION_LEVEL_READ_UNCOMMITTED = 0,
RD_KAFKA_ISOLATION_LEVEL_READ_COMMITTED = 1,
} rd_kafka_IsolationLevel_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_include_authorized_operations(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
rd_kafka_error_t *rd_kafka_AdminOptions_set_isolation_level(rd_kafka_AdminOptions_t *options, rd_kafka_IsolationLevel_t value);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
typedef enum rd_kafka_AlterConfigOpType_t {
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SET = 0,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_DELETE = 1,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_APPEND = 2,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SUBTRACT = 3,
RD_KAFKA_ALTER_CONFIG_OP_TYPE__CNT,
} rd_kafka_AlterConfigOpType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
rd_kafka_error_t *rd_kafka_ConfigResource_add_incremental_config(rd_kafka_ConfigResource_t *config, const char *name, rd_kafka_AlterConfigOpType_t op_type, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_IncrementalAlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_IncrementalAlterConfigs_result_resources(const rd_kafka_IncrementalAlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_TopicCollection_s rd_kafka_TopicCollection_t;
typedef struct rd_kafka_TopicPartitionInfo_s rd_kafka_TopicPartitionInfo_t;
typedef struct rd_kafka_TopicDescription_s rd_kafka_TopicDescription_t;
rd_kafka_TopicCollection_t *rd_kafka_TopicCollection_of_topic_names(const char **topics, size_t topics_cnt);
void rd_kafka_TopicCollection_destroy(rd_kafka_TopicCollection_t *topics);
void rd_kafka_DescribeTopics(rd_kafka_t *rk, const rd_kafka_TopicCollection_t *topics, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_TopicDescription_t **rd_kafka_DescribeTopics_result_topics(const rd_kafka_DescribeTopics_result_t *result, size_t *cntp);
const rd_kafka_TopicPartitionInfo_t **rd_kafka_TopicDescription_partitions(const rd_kafka_TopicDescription_t *topicdesc, size_t *cntp);
const int rd_kafka_TopicPartitionInfo_partition(const rd_kafka_TopicPartitionInfo_t *partition);
const rd_kafka_Node_t *rd_kafka_TopicPartitionInfo_leader(const rd_kafka_TopicPartitionInfo_t *partition);
const rd_kafka_Node_t **rd_kafka_TopicPartitionInfo_isr(const rd_kafka_TopicPartitionInfo_t *partition, size_t *cntp);
const rd_kafka_Node_t **rd_kafka_TopicPartitionInfo_replicas(const rd_kafka_TopicPartitionInfo_t *partition, size_t *cntp);
const rd_kafka_AclOperation_t *rd_kafka_TopicDescription_authorized_operations(const rd_kafka_TopicDescription_t *topicdesc, size_t *cntp);
const char *rd_kafka_TopicDescription_name(const rd_kafka_TopicDescription_t *topicdesc);
const rd_kafka_Uuid_t *rd_kafka_TopicDescription_topic_id(const rd_kafka_TopicDescription_t *topicdesc);
int rd_kafka_TopicDescription_is_internal(const rd_kafka_TopicDescription_t *topicdesc);
const rd_kafka_error_t *rd_kafka_TopicDescription_error(const rd_kafka_TopicDescription_t *topicdesc);
void rd_kafka_DescribeCluster(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_Node_t **rd_kafka_DescribeCluster_result_nodes(const rd_kafka_DescribeCluster_result_t *result, size_t *cntp);
const rd_kafka_AclOperation_t *rd_kafka_DescribeCluster_result_authorized_operations(const rd_kafka_DescribeCluster_result_t *result, size_t *cntp);
const rd_kafka_Node_t *rd_kafka_DescribeCluster_result_controller(const rd_kafka_DescribeCluster_result_t *result);
const char *rd_kafka_DescribeCluster_result_cluster_id(const rd_kafka_DescribeCluster_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_AclOperation_t *rd_kafka_ConsumerGroupDescription_authorized_operations(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t *cntp);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef enum rd_kafka_OffsetSpec_t {
RD_KAFKA_OFFSET_SPEC_MAX_TIMESTAMP = (- 3),
RD_KAFKA_OFFSET_SPEC_EARLIEST = (- 2),
RD_KAFKA_OFFSET_SPEC_LATEST = (- 1),
} rd_kafka_OffsetSpec_t;
typedef struct rd_kafka_ListOffsetsResultInfo_s rd_kafka_ListOffsetsResultInfo_t;
const rd_kafka_topic_partition_t *rd_kafka_ListOffsetsResultInfo_topic_partition(const rd_kafka_ListOffsetsResultInfo_t *result_info);
int64_t rd_kafka_ListOffsetsResultInfo_timestamp(const rd_kafka_ListOffsetsResultInfo_t *result_info);
const rd_kafka_ListOffsetsResultInfo_t **rd_kafka_ListOffsets_result_infos(const rd_kafka_ListOffsets_result_t *result, size_t *cntp);
void rd_kafka_ListOffsets(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *topic_partitions, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef enum rd_kafka_ScramMechanism_t {
RD_KAFKA_SCRAM_MECHANISM_UNKNOWN = 0,
RD_KAFKA_SCRAM_MECHANISM_SHA_256 = 1,
RD_KAFKA_SCRAM_MECHANISM_SHA_512 = 2,
RD_KAFKA_SCRAM_MECHANISM__CNT,
} rd_kafka_ScramMechanism_t;
typedef struct rd_kafka_ScramCredentialInfo_s rd_kafka_ScramCredentialInfo_t;
rd_kafka_ScramMechanism_t rd_kafka_ScramCredentialInfo_mechanism(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
int32_t rd_kafka_ScramCredentialInfo_iterations(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
typedef struct rd_kafka_UserScramCredentialsDescription_s rd_kafka_UserScramCredentialsDescription_t;
const char *rd_kafka_UserScramCredentialsDescription_user(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_error_t *rd_kafka_UserScramCredentialsDescription_error(const rd_kafka_UserScramCredentialsDescription_t *description);
size_t rd_kafka_UserScramCredentialsDescription_scramcredentialinfo_count(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_ScramCredentialInfo_t *rd_kafka_UserScramCredentialsDescription_scramcredentialinfo(const rd_kafka_UserScramCredentialsDescription_t *description, size_t idx);
const rd_kafka_UserScramCredentialsDescription_t **rd_kafka_DescribeUserScramCredentials_result_descriptions(const rd_kafka_DescribeUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_DescribeUserScramCredentials(rd_kafka_t *rk, const char **users, size_t user_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_UserScramCredentialAlteration_s rd_kafka_UserScramCredentialAlteration_t;
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialUpsertion_new(const char *username, rd_kafka_ScramMechanism_t mechanism, int32_t iterations, const unsigned char *password, size_t password_size, const unsigned char *salt, size_t salt_size);
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialDeletion_new(const char *username, rd_kafka_ScramMechanism_t mechanism);
void rd_kafka_UserScramCredentialAlteration_destroy(rd_kafka_UserScramCredentialAlteration_t *alteration);
void rd_kafka_UserScramCredentialAlteration_destroy_array(rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt);
typedef struct rd_kafka_AlterUserScramCredentials_result_response_s rd_kafka_AlterUserScramCredentials_result_response_t;
const char *rd_kafka_AlterUserScramCredentials_result_response_user(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_error_t *rd_kafka_AlterUserScramCredentials_result_response_error(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_AlterUserScramCredentials_result_response_t **rd_kafka_AlterUserScramCredentials_result_responses(const rd_kafka_AlterUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_AlterUserScramCredentials(rd_kafka_t *rk, rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_partition_push_leader_response(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition, int32_t leader_id, int32_t leader_epoch);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
void rd_kafka_mock_start_request_tracking(rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_stop_request_tracking(rd_kafka_mock_cluster_t *mcluster);
typedef struct rd_kafka_mock_request_s rd_kafka_mock_request_t;
void rd_kafka_mock_request_destroy(rd_kafka_mock_request_t *mreq);
void rd_kafka_mock_request_destroy_array(rd_kafka_mock_request_t **mreqs, size_t mreq_cnt);
int32_t rd_kafka_mock_request_id(rd_kafka_mock_request_t *mreq);
int16_t rd_kafka_mock_request_api_key(rd_kafka_mock_request_t *mreq);
int64_t rd_kafka_mock_request_timestamp(rd_kafka_mock_request_t *mreq);
rd_kafka_mock_request_t **rd_kafka_mock_get_requests(rd_kafka_mock_cluster_t *mcluster, size_t *cntp);
void rd_kafka_mock_clear_requests(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_resp_err_t rd_kafka_mock_telemetry_set_requested_metrics(rd_kafka_mock_cluster_t *mcluster, char **metrics, size_t metrics_cnt);
rd_kafka_resp_err_t rd_kafka_mock_telemetry_set_push_interval(rd_kafka_mock_cluster_t *mcluster, int64_t push_interval_ms);
'
RD_KAFKA_VERSION¶
public RD_KAFKA_VERSION = 33947903
librdkafka version
Interpreted as hex MM.mm.rr.xx
:
- MM = Major
- mm = minor
- rr = revision
- xx = pre-release id (0xff is the final release)
E.g.: 0x000801ff
= 0.8.1
- Remarks
- This value should only be used during compile time, for runtime checks of version use rd_kafka_version()
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE¶
public RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76
Unsupported compression type
RD_KAFKA_RESP_ERR_END_ALL¶
public RD_KAFKA_RESP_ERR_END_ALL = 119
RD_KAFKA_ADMIN_OP__CNT¶
public RD_KAFKA_ADMIN_OP__CNT = 23
Number of ops defined
RD_KAFKA_RESOURCE__CNT¶
public RD_KAFKA_RESOURCE__CNT = 6
Number of resource types defined
RD_KAFKA_CDEF¶
public RD_KAFKA_CDEF = 'typedef long int ssize_t;
typedef struct _IO_FILE FILE;
typedef long int mode_t;
typedef signed int int16_t;
typedef unsigned int uint16_t;
typedef signed int int32_t;
typedef signed long int int64_t;
int rd_kafka_version(void);
const char *rd_kafka_version_str(void);
typedef enum rd_kafka_type_t {
RD_KAFKA_PRODUCER,
RD_KAFKA_CONSUMER,
} rd_kafka_type_t;
typedef enum rd_kafka_timestamp_type_t {
RD_KAFKA_TIMESTAMP_NOT_AVAILABLE,
RD_KAFKA_TIMESTAMP_CREATE_TIME,
RD_KAFKA_TIMESTAMP_LOG_APPEND_TIME,
} rd_kafka_timestamp_type_t;
const char *rd_kafka_get_debug_contexts(void);
typedef struct rd_kafka_s rd_kafka_t;
typedef struct rd_kafka_topic_s rd_kafka_topic_t;
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
typedef struct rd_kafka_queue_s rd_kafka_queue_t;
typedef struct rd_kafka_op_s rd_kafka_event_t;
typedef struct rd_kafka_topic_result_s rd_kafka_topic_result_t;
typedef struct rd_kafka_consumer_group_metadata_s rd_kafka_consumer_group_metadata_t;
typedef struct rd_kafka_error_s {
unsigned int code;
char *errstr;
unsigned char fatal;
unsigned char retriable;
unsigned char txn_requires_abort;
} rd_kafka_error_t;
typedef struct rd_kafka_headers_s rd_kafka_headers_t;
typedef struct rd_kafka_group_result_s rd_kafka_group_result_t;
typedef struct rd_kafka_acl_result_s rd_kafka_acl_result_t;
typedef struct rd_kafka_Uuid_s rd_kafka_Uuid_t;
typedef struct rd_kafka_topic_partition_result_s rd_kafka_topic_partition_result_t;
typedef enum {
RD_KAFKA_RESP_ERR__BEGIN = (- 200),
RD_KAFKA_RESP_ERR__BAD_MSG = (- 199),
RD_KAFKA_RESP_ERR__BAD_COMPRESSION = (- 198),
RD_KAFKA_RESP_ERR__DESTROY = (- 197),
RD_KAFKA_RESP_ERR__FAIL = (- 196),
RD_KAFKA_RESP_ERR__TRANSPORT = (- 195),
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE = (- 194),
RD_KAFKA_RESP_ERR__RESOLVE = (- 193),
RD_KAFKA_RESP_ERR__MSG_TIMED_OUT = (- 192),
RD_KAFKA_RESP_ERR__PARTITION_EOF = (- 191),
RD_KAFKA_RESP_ERR__UNKNOWN_PARTITION = (- 190),
RD_KAFKA_RESP_ERR__FS = (- 189),
RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC = (- 188),
RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN = (- 187),
RD_KAFKA_RESP_ERR__INVALID_ARG = (- 186),
RD_KAFKA_RESP_ERR__TIMED_OUT = (- 185),
RD_KAFKA_RESP_ERR__QUEUE_FULL = (- 184),
RD_KAFKA_RESP_ERR__ISR_INSUFF = (- 183),
RD_KAFKA_RESP_ERR__NODE_UPDATE = (- 182),
RD_KAFKA_RESP_ERR__SSL = (- 181),
RD_KAFKA_RESP_ERR__WAIT_COORD = (- 180),
RD_KAFKA_RESP_ERR__UNKNOWN_GROUP = (- 179),
RD_KAFKA_RESP_ERR__IN_PROGRESS = (- 178),
RD_KAFKA_RESP_ERR__PREV_IN_PROGRESS = (- 177),
RD_KAFKA_RESP_ERR__EXISTING_SUBSCRIPTION = (- 176),
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS = (- 175),
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS = (- 174),
RD_KAFKA_RESP_ERR__CONFLICT = (- 173),
RD_KAFKA_RESP_ERR__STATE = (- 172),
RD_KAFKA_RESP_ERR__UNKNOWN_PROTOCOL = (- 171),
RD_KAFKA_RESP_ERR__NOT_IMPLEMENTED = (- 170),
RD_KAFKA_RESP_ERR__AUTHENTICATION = (- 169),
RD_KAFKA_RESP_ERR__NO_OFFSET = (- 168),
RD_KAFKA_RESP_ERR__OUTDATED = (- 167),
RD_KAFKA_RESP_ERR__TIMED_OUT_QUEUE = (- 166),
RD_KAFKA_RESP_ERR__UNSUPPORTED_FEATURE = (- 165),
RD_KAFKA_RESP_ERR__WAIT_CACHE = (- 164),
RD_KAFKA_RESP_ERR__INTR = (- 163),
RD_KAFKA_RESP_ERR__KEY_SERIALIZATION = (- 162),
RD_KAFKA_RESP_ERR__VALUE_SERIALIZATION = (- 161),
RD_KAFKA_RESP_ERR__KEY_DESERIALIZATION = (- 160),
RD_KAFKA_RESP_ERR__VALUE_DESERIALIZATION = (- 159),
RD_KAFKA_RESP_ERR__PARTIAL = (- 158),
RD_KAFKA_RESP_ERR__READ_ONLY = (- 157),
RD_KAFKA_RESP_ERR__NOENT = (- 156),
RD_KAFKA_RESP_ERR__UNDERFLOW = (- 155),
RD_KAFKA_RESP_ERR__INVALID_TYPE = (- 154),
RD_KAFKA_RESP_ERR__RETRY = (- 153),
RD_KAFKA_RESP_ERR__PURGE_QUEUE = (- 152),
RD_KAFKA_RESP_ERR__PURGE_INFLIGHT = (- 151),
RD_KAFKA_RESP_ERR__FATAL = (- 150),
RD_KAFKA_RESP_ERR__INCONSISTENT = (- 149),
RD_KAFKA_RESP_ERR__GAPLESS_GUARANTEE = (- 148),
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED = (- 147),
RD_KAFKA_RESP_ERR__UNKNOWN_BROKER = (- 146),
RD_KAFKA_RESP_ERR__NOT_CONFIGURED = (- 145),
RD_KAFKA_RESP_ERR__FENCED = (- 144),
RD_KAFKA_RESP_ERR__APPLICATION = (- 143),
RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = (- 142),
RD_KAFKA_RESP_ERR__NOOP = (- 141),
RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = (- 140),
RD_KAFKA_RESP_ERR__LOG_TRUNCATION = (- 139),
RD_KAFKA_RESP_ERR__INVALID_DIFFERENT_RECORD = (- 138),
RD_KAFKA_RESP_ERR__END = (- 100),
RD_KAFKA_RESP_ERR_UNKNOWN = (- 1),
RD_KAFKA_RESP_ERR_NO_ERROR = 0,
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE = 1,
RD_KAFKA_RESP_ERR_INVALID_MSG = 2,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART = 3,
RD_KAFKA_RESP_ERR_INVALID_MSG_SIZE = 4,
RD_KAFKA_RESP_ERR_LEADER_NOT_AVAILABLE = 5,
RD_KAFKA_RESP_ERR_NOT_LEADER_FOR_PARTITION = 6,
RD_KAFKA_RESP_ERR_REQUEST_TIMED_OUT = 7,
RD_KAFKA_RESP_ERR_BROKER_NOT_AVAILABLE = 8,
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE = 9,
RD_KAFKA_RESP_ERR_MSG_SIZE_TOO_LARGE = 10,
RD_KAFKA_RESP_ERR_STALE_CTRL_EPOCH = 11,
RD_KAFKA_RESP_ERR_OFFSET_METADATA_TOO_LARGE = 12,
RD_KAFKA_RESP_ERR_NETWORK_EXCEPTION = 13,
RD_KAFKA_RESP_ERR_COORDINATOR_LOAD_IN_PROGRESS = 14,
RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE = 15,
RD_KAFKA_RESP_ERR_NOT_COORDINATOR = 16,
RD_KAFKA_RESP_ERR_TOPIC_EXCEPTION = 17,
RD_KAFKA_RESP_ERR_RECORD_LIST_TOO_LARGE = 18,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS = 19,
RD_KAFKA_RESP_ERR_NOT_ENOUGH_REPLICAS_AFTER_APPEND = 20,
RD_KAFKA_RESP_ERR_INVALID_REQUIRED_ACKS = 21,
RD_KAFKA_RESP_ERR_ILLEGAL_GENERATION = 22,
RD_KAFKA_RESP_ERR_INCONSISTENT_GROUP_PROTOCOL = 23,
RD_KAFKA_RESP_ERR_INVALID_GROUP_ID = 24,
RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID = 25,
RD_KAFKA_RESP_ERR_INVALID_SESSION_TIMEOUT = 26,
RD_KAFKA_RESP_ERR_REBALANCE_IN_PROGRESS = 27,
RD_KAFKA_RESP_ERR_INVALID_COMMIT_OFFSET_SIZE = 28,
RD_KAFKA_RESP_ERR_TOPIC_AUTHORIZATION_FAILED = 29,
RD_KAFKA_RESP_ERR_GROUP_AUTHORIZATION_FAILED = 30,
RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED = 31,
RD_KAFKA_RESP_ERR_INVALID_TIMESTAMP = 32,
RD_KAFKA_RESP_ERR_UNSUPPORTED_SASL_MECHANISM = 33,
RD_KAFKA_RESP_ERR_ILLEGAL_SASL_STATE = 34,
RD_KAFKA_RESP_ERR_UNSUPPORTED_VERSION = 35,
RD_KAFKA_RESP_ERR_TOPIC_ALREADY_EXISTS = 36,
RD_KAFKA_RESP_ERR_INVALID_PARTITIONS = 37,
RD_KAFKA_RESP_ERR_INVALID_REPLICATION_FACTOR = 38,
RD_KAFKA_RESP_ERR_INVALID_REPLICA_ASSIGNMENT = 39,
RD_KAFKA_RESP_ERR_INVALID_CONFIG = 40,
RD_KAFKA_RESP_ERR_NOT_CONTROLLER = 41,
RD_KAFKA_RESP_ERR_INVALID_REQUEST = 42,
RD_KAFKA_RESP_ERR_UNSUPPORTED_FOR_MESSAGE_FORMAT = 43,
RD_KAFKA_RESP_ERR_POLICY_VIOLATION = 44,
RD_KAFKA_RESP_ERR_OUT_OF_ORDER_SEQUENCE_NUMBER = 45,
RD_KAFKA_RESP_ERR_DUPLICATE_SEQUENCE_NUMBER = 46,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_EPOCH = 47,
RD_KAFKA_RESP_ERR_INVALID_TXN_STATE = 48,
RD_KAFKA_RESP_ERR_INVALID_PRODUCER_ID_MAPPING = 49,
RD_KAFKA_RESP_ERR_INVALID_TRANSACTION_TIMEOUT = 50,
RD_KAFKA_RESP_ERR_CONCURRENT_TRANSACTIONS = 51,
RD_KAFKA_RESP_ERR_TRANSACTION_COORDINATOR_FENCED = 52,
RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED = 53,
RD_KAFKA_RESP_ERR_SECURITY_DISABLED = 54,
RD_KAFKA_RESP_ERR_OPERATION_NOT_ATTEMPTED = 55,
RD_KAFKA_RESP_ERR_KAFKA_STORAGE_ERROR = 56,
RD_KAFKA_RESP_ERR_LOG_DIR_NOT_FOUND = 57,
RD_KAFKA_RESP_ERR_SASL_AUTHENTICATION_FAILED = 58,
RD_KAFKA_RESP_ERR_UNKNOWN_PRODUCER_ID = 59,
RD_KAFKA_RESP_ERR_REASSIGNMENT_IN_PROGRESS = 60,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTH_DISABLED = 61,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_NOT_FOUND = 62,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_OWNER_MISMATCH = 63,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_REQUEST_NOT_ALLOWED = 64,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_AUTHORIZATION_FAILED = 65,
RD_KAFKA_RESP_ERR_DELEGATION_TOKEN_EXPIRED = 66,
RD_KAFKA_RESP_ERR_INVALID_PRINCIPAL_TYPE = 67,
RD_KAFKA_RESP_ERR_NON_EMPTY_GROUP = 68,
RD_KAFKA_RESP_ERR_GROUP_ID_NOT_FOUND = 69,
RD_KAFKA_RESP_ERR_FETCH_SESSION_ID_NOT_FOUND = 70,
RD_KAFKA_RESP_ERR_INVALID_FETCH_SESSION_EPOCH = 71,
RD_KAFKA_RESP_ERR_LISTENER_NOT_FOUND = 72,
RD_KAFKA_RESP_ERR_TOPIC_DELETION_DISABLED = 73,
RD_KAFKA_RESP_ERR_FENCED_LEADER_EPOCH = 74,
RD_KAFKA_RESP_ERR_UNKNOWN_LEADER_EPOCH = 75,
RD_KAFKA_RESP_ERR_UNSUPPORTED_COMPRESSION_TYPE = 76,
RD_KAFKA_RESP_ERR_STALE_BROKER_EPOCH = 77,
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE = 78,
RD_KAFKA_RESP_ERR_MEMBER_ID_REQUIRED = 79,
RD_KAFKA_RESP_ERR_PREFERRED_LEADER_NOT_AVAILABLE = 80,
RD_KAFKA_RESP_ERR_GROUP_MAX_SIZE_REACHED = 81,
RD_KAFKA_RESP_ERR_FENCED_INSTANCE_ID = 82,
RD_KAFKA_RESP_ERR_ELIGIBLE_LEADERS_NOT_AVAILABLE = 83,
RD_KAFKA_RESP_ERR_ELECTION_NOT_NEEDED = 84,
RD_KAFKA_RESP_ERR_NO_REASSIGNMENT_IN_PROGRESS = 85,
RD_KAFKA_RESP_ERR_GROUP_SUBSCRIBED_TO_TOPIC = 86,
RD_KAFKA_RESP_ERR_INVALID_RECORD = 87,
RD_KAFKA_RESP_ERR_UNSTABLE_OFFSET_COMMIT = 88,
RD_KAFKA_RESP_ERR_THROTTLING_QUOTA_EXCEEDED = 89,
RD_KAFKA_RESP_ERR_PRODUCER_FENCED = 90,
RD_KAFKA_RESP_ERR_RESOURCE_NOT_FOUND = 91,
RD_KAFKA_RESP_ERR_DUPLICATE_RESOURCE = 92,
RD_KAFKA_RESP_ERR_UNACCEPTABLE_CREDENTIAL = 93,
RD_KAFKA_RESP_ERR_INCONSISTENT_VOTER_SET = 94,
RD_KAFKA_RESP_ERR_INVALID_UPDATE_VERSION = 95,
RD_KAFKA_RESP_ERR_FEATURE_UPDATE_FAILED = 96,
RD_KAFKA_RESP_ERR_PRINCIPAL_DESERIALIZATION_FAILURE = 97,
RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_ID = 100,
RD_KAFKA_RESP_ERR_FENCED_MEMBER_EPOCH = 110,
RD_KAFKA_RESP_ERR_UNRELEASED_INSTANCE_ID = 111,
RD_KAFKA_RESP_ERR_UNSUPPORTED_ASSIGNOR = 112,
RD_KAFKA_RESP_ERR_STALE_MEMBER_EPOCH = 113,
RD_KAFKA_RESP_ERR_UNKNOWN_SUBSCRIPTION_ID = 117,
RD_KAFKA_RESP_ERR_TELEMETRY_TOO_LARGE = 118,
RD_KAFKA_RESP_ERR_END_ALL,
} rd_kafka_resp_err_t;
struct rd_kafka_err_desc {
rd_kafka_resp_err_t code;
char *name;
char *desc;
};
void rd_kafka_get_err_descs(const struct rd_kafka_err_desc **errdescs, size_t *cntp);
const char *rd_kafka_err2str(rd_kafka_resp_err_t err);
const char *rd_kafka_err2name(rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_last_error(void);
rd_kafka_resp_err_t rd_kafka_errno2err(int errnox);
int rd_kafka_errno(void);
rd_kafka_resp_err_t rd_kafka_fatal_error(rd_kafka_t *rk, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_test_fatal_error(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason);
rd_kafka_resp_err_t rd_kafka_error_code(const rd_kafka_error_t *error);
const char *rd_kafka_error_name(const rd_kafka_error_t *error);
const char *rd_kafka_error_string(const rd_kafka_error_t *error);
int rd_kafka_error_is_fatal(const rd_kafka_error_t *error);
int rd_kafka_error_is_retriable(const rd_kafka_error_t *error);
int rd_kafka_error_txn_requires_abort(const rd_kafka_error_t *error);
void rd_kafka_error_destroy(rd_kafka_error_t *error);
rd_kafka_error_t *rd_kafka_error_new(rd_kafka_resp_err_t code, const char *fmt, ...);
typedef struct rd_kafka_topic_partition_s {
char *topic;
int32_t partition;
int64_t offset;
void *metadata;
size_t metadata_size;
void *opaque;
rd_kafka_resp_err_t err;
void *_private;
} rd_kafka_topic_partition_t;
void rd_kafka_topic_partition_destroy(rd_kafka_topic_partition_t *rktpar);
void rd_kafka_topic_partition_set_leader_epoch(rd_kafka_topic_partition_t *rktpar, int32_t leader_epoch);
int32_t rd_kafka_topic_partition_get_leader_epoch(const rd_kafka_topic_partition_t *rktpar);
typedef struct rd_kafka_topic_partition_list_s {
int cnt;
int size;
rd_kafka_topic_partition_t *elems;
} rd_kafka_topic_partition_list_t;
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_new(int size);
void rd_kafka_topic_partition_list_destroy(rd_kafka_topic_partition_list_t *rkparlist);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_add(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_add_range(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t start, int32_t stop);
int rd_kafka_topic_partition_list_del(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
int rd_kafka_topic_partition_list_del_by_idx(rd_kafka_topic_partition_list_t *rktparlist, int idx);
rd_kafka_topic_partition_list_t *rd_kafka_topic_partition_list_copy(const rd_kafka_topic_partition_list_t *src);
rd_kafka_resp_err_t rd_kafka_topic_partition_list_set_offset(rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition, int64_t offset);
rd_kafka_topic_partition_t *rd_kafka_topic_partition_list_find(const rd_kafka_topic_partition_list_t *rktparlist, const char *topic, int32_t partition);
void rd_kafka_topic_partition_list_sort(rd_kafka_topic_partition_list_t *rktparlist, int (*cmp)(const void *a, const void *b, void *cmp_opaque), void *cmp_opaque);
typedef enum rd_kafka_vtype_t {
RD_KAFKA_VTYPE_END,
RD_KAFKA_VTYPE_TOPIC,
RD_KAFKA_VTYPE_RKT,
RD_KAFKA_VTYPE_PARTITION,
RD_KAFKA_VTYPE_VALUE,
RD_KAFKA_VTYPE_KEY,
RD_KAFKA_VTYPE_OPAQUE,
RD_KAFKA_VTYPE_MSGFLAGS,
RD_KAFKA_VTYPE_TIMESTAMP,
RD_KAFKA_VTYPE_HEADER,
RD_KAFKA_VTYPE_HEADERS,
} rd_kafka_vtype_t;
typedef struct rd_kafka_vu_s {
rd_kafka_vtype_t vtype;
union {
char *cstr;
rd_kafka_topic_t *rkt;
int i;
int32_t i32;
int64_t i64;
struct {
void *ptr;
size_t size;
} mem;
struct {
char *name;
void *val;
ssize_t size;
} header;
rd_kafka_headers_t *headers;
void *ptr;
char _pad[64];
} u;
} rd_kafka_vu_t;
rd_kafka_headers_t *rd_kafka_headers_new(size_t initial_count);
void rd_kafka_headers_destroy(rd_kafka_headers_t *hdrs);
rd_kafka_headers_t *rd_kafka_headers_copy(const rd_kafka_headers_t *src);
rd_kafka_resp_err_t rd_kafka_header_add(rd_kafka_headers_t *hdrs, const char *name, ssize_t name_size, const void *value, ssize_t value_size);
rd_kafka_resp_err_t rd_kafka_header_remove(rd_kafka_headers_t *hdrs, const char *name);
rd_kafka_resp_err_t rd_kafka_header_get_last(const rd_kafka_headers_t *hdrs, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get(const rd_kafka_headers_t *hdrs, size_t idx, const char *name, const void **valuep, size_t *sizep);
rd_kafka_resp_err_t rd_kafka_header_get_all(const rd_kafka_headers_t *hdrs, size_t idx, const char **namep, const void **valuep, size_t *sizep);
typedef struct rd_kafka_message_s {
rd_kafka_resp_err_t err;
rd_kafka_topic_t *rkt;
int32_t partition;
void *payload;
size_t len;
void *key;
size_t key_len;
int64_t offset;
void *_private;
} rd_kafka_message_t;
void rd_kafka_message_destroy(rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_errstr(const rd_kafka_message_t *rkmessage);
const char *rd_kafka_message_produce_errstr(const rd_kafka_message_t *rkmessage);
int64_t rd_kafka_message_timestamp(const rd_kafka_message_t *rkmessage, rd_kafka_timestamp_type_t *tstype);
int64_t rd_kafka_message_latency(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_broker_id(const rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_message_headers(const rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
rd_kafka_resp_err_t rd_kafka_message_detach_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t **hdrsp);
void rd_kafka_message_set_headers(rd_kafka_message_t *rkmessage, rd_kafka_headers_t *hdrs);
size_t rd_kafka_header_cnt(const rd_kafka_headers_t *hdrs);
typedef enum {
RD_KAFKA_MSG_STATUS_NOT_PERSISTED = 0,
RD_KAFKA_MSG_STATUS_POSSIBLY_PERSISTED = 1,
RD_KAFKA_MSG_STATUS_PERSISTED = 2,
} rd_kafka_msg_status_t;
rd_kafka_msg_status_t rd_kafka_message_status(const rd_kafka_message_t *rkmessage);
int32_t rd_kafka_message_leader_epoch(const rd_kafka_message_t *rkmessage);
const char *rd_kafka_Uuid_base64str(const rd_kafka_Uuid_t *uuid);
int64_t rd_kafka_Uuid_least_significant_bits(const rd_kafka_Uuid_t *uuid);
int64_t rd_kafka_Uuid_most_significant_bits(const rd_kafka_Uuid_t *uuid);
rd_kafka_Uuid_t *rd_kafka_Uuid_new(int64_t most_significant_bits, int64_t least_significant_bits);
rd_kafka_Uuid_t *rd_kafka_Uuid_copy(const rd_kafka_Uuid_t *uuid);
void rd_kafka_Uuid_destroy(rd_kafka_Uuid_t *uuid);
typedef enum {
RD_KAFKA_CONF_UNKNOWN = (- 2),
RD_KAFKA_CONF_INVALID = (- 1),
RD_KAFKA_CONF_OK = 0,
} rd_kafka_conf_res_t;
rd_kafka_conf_t *rd_kafka_conf_new(void);
void rd_kafka_conf_destroy(rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup(const rd_kafka_conf_t *conf);
rd_kafka_conf_t *rd_kafka_conf_dup_filter(const rd_kafka_conf_t *conf, size_t filter_cnt, const char **filter);
const rd_kafka_conf_t *rd_kafka_conf(rd_kafka_t *rk);
rd_kafka_conf_res_t rd_kafka_conf_set(rd_kafka_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_events(rd_kafka_conf_t *conf, int events);
void rd_kafka_conf_set_background_event_cb(rd_kafka_conf_t *conf, void (*event_cb)(rd_kafka_t *rk, rd_kafka_event_t *rkev, void *opaque));
void rd_kafka_conf_set_dr_cb(rd_kafka_conf_t *conf, void (*dr_cb)(rd_kafka_t *rk, void *payload, size_t len, rd_kafka_resp_err_t err, void *opaque, void *msg_opaque));
void rd_kafka_conf_set_dr_msg_cb(rd_kafka_conf_t *conf, void (*dr_msg_cb)(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_consume_cb(rd_kafka_conf_t *conf, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *opaque));
void rd_kafka_conf_set_rebalance_cb(rd_kafka_conf_t *conf, void (*rebalance_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *partitions, void *opaque));
void rd_kafka_conf_set_offset_commit_cb(rd_kafka_conf_t *conf, void (*offset_commit_cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *opaque));
void rd_kafka_conf_set_error_cb(rd_kafka_conf_t *conf, void (*error_cb)(rd_kafka_t *rk, int err, const char *reason, void *opaque));
void rd_kafka_conf_set_throttle_cb(rd_kafka_conf_t *conf, void (*throttle_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int throttle_time_ms, void *opaque));
void rd_kafka_conf_set_log_cb(rd_kafka_conf_t *conf, void (*log_cb)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_conf_set_stats_cb(rd_kafka_conf_t *conf, int (*stats_cb)(rd_kafka_t *rk, char *json, size_t json_len, void *opaque));
void rd_kafka_conf_set_oauthbearer_token_refresh_cb(rd_kafka_conf_t *conf, void (*oauthbearer_token_refresh_cb)(rd_kafka_t *rk, const char *oauthbearer_config, void *opaque));
void rd_kafka_conf_enable_sasl_queue(rd_kafka_conf_t *conf, int enable);
void rd_kafka_conf_set_socket_cb(rd_kafka_conf_t *conf, int (*socket_cb)(int domain, int type, int protocol, void *opaque));
void rd_kafka_conf_set_connect_cb(rd_kafka_conf_t *conf, int (*connect_cb)(int sockfd, const struct sockaddr *addr, int addrlen, const char *id, void *opaque));
void rd_kafka_conf_set_closesocket_cb(rd_kafka_conf_t *conf, int (*closesocket_cb)(int sockfd, void *opaque));
struct addrinfo;
void rd_kafka_conf_set_resolve_cb(rd_kafka_conf_t *conf, int (*resolve_cb)(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res, void *opaque));
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert_verify_cb(rd_kafka_conf_t *conf, int (*ssl_cert_verify_cb)(rd_kafka_t *rk, const char *broker_name, int32_t broker_id, int *x509_error, int depth, const char *buf, size_t size, char *errstr, size_t errstr_size, void *opaque));
typedef enum rd_kafka_cert_type_t {
RD_KAFKA_CERT_PUBLIC_KEY,
RD_KAFKA_CERT_PRIVATE_KEY,
RD_KAFKA_CERT_CA,
RD_KAFKA_CERT__CNT,
} rd_kafka_cert_type_t;
typedef enum rd_kafka_cert_enc_t {
RD_KAFKA_CERT_ENC_PKCS12,
RD_KAFKA_CERT_ENC_DER,
RD_KAFKA_CERT_ENC_PEM,
RD_KAFKA_CERT_ENC__CNT,
} rd_kafka_cert_enc_t;
rd_kafka_conf_res_t rd_kafka_conf_set_ssl_cert(rd_kafka_conf_t *conf, rd_kafka_cert_type_t cert_type, rd_kafka_cert_enc_t cert_enc, const void *buffer, size_t size, char *errstr, size_t errstr_size);
void rd_kafka_conf_set_engine_callback_data(rd_kafka_conf_t *conf, void *callback_data);
void rd_kafka_conf_set_opaque(rd_kafka_conf_t *conf, void *opaque);
void *rd_kafka_opaque(const rd_kafka_t *rk);
void rd_kafka_conf_set_default_topic_conf(rd_kafka_conf_t *conf, rd_kafka_topic_conf_t *tconf);
rd_kafka_topic_conf_t *rd_kafka_conf_get_default_topic_conf(rd_kafka_conf_t *conf);
rd_kafka_conf_res_t rd_kafka_conf_get(const rd_kafka_conf_t *conf, const char *name, char *dest, size_t *dest_size);
rd_kafka_conf_res_t rd_kafka_topic_conf_get(const rd_kafka_topic_conf_t *conf, const char *name, char *dest, size_t *dest_size);
const char **rd_kafka_conf_dump(rd_kafka_conf_t *conf, size_t *cntp);
const char **rd_kafka_topic_conf_dump(rd_kafka_topic_conf_t *conf, size_t *cntp);
void rd_kafka_conf_dump_free(const char **arr, size_t cnt);
void rd_kafka_conf_properties_show(FILE *fp);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_new(void);
rd_kafka_topic_conf_t *rd_kafka_topic_conf_dup(const rd_kafka_topic_conf_t *conf);
rd_kafka_topic_conf_t *rd_kafka_default_topic_conf_dup(rd_kafka_t *rk);
void rd_kafka_topic_conf_destroy(rd_kafka_topic_conf_t *topic_conf);
rd_kafka_conf_res_t rd_kafka_topic_conf_set(rd_kafka_topic_conf_t *conf, const char *name, const char *value, char *errstr, size_t errstr_size);
void rd_kafka_topic_conf_set_opaque(rd_kafka_topic_conf_t *conf, void *rkt_opaque);
void rd_kafka_topic_conf_set_partitioner_cb(rd_kafka_topic_conf_t *topic_conf, int32_t (*partitioner)(const rd_kafka_topic_t *rkt, const void *keydata, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque));
void rd_kafka_topic_conf_set_msg_order_cmp(rd_kafka_topic_conf_t *topic_conf, int (*msg_order_cmp)(const rd_kafka_message_t *a, const rd_kafka_message_t *b));
int rd_kafka_topic_partition_available(const rd_kafka_topic_t *rkt, int32_t partition);
int32_t rd_kafka_msg_partitioner_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_consistent_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_murmur2_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
int32_t rd_kafka_msg_partitioner_fnv1a_random(const rd_kafka_topic_t *rkt, const void *key, size_t keylen, int32_t partition_cnt, void *rkt_opaque, void *msg_opaque);
rd_kafka_t *rd_kafka_new(rd_kafka_type_t type, rd_kafka_conf_t *conf, char *errstr, size_t errstr_size);
void rd_kafka_destroy(rd_kafka_t *rk);
void rd_kafka_destroy_flags(rd_kafka_t *rk, int flags);
const char *rd_kafka_name(const rd_kafka_t *rk);
rd_kafka_type_t rd_kafka_type(const rd_kafka_t *rk);
char *rd_kafka_memberid(const rd_kafka_t *rk);
char *rd_kafka_clusterid(rd_kafka_t *rk, int timeout_ms);
int32_t rd_kafka_controllerid(rd_kafka_t *rk, int timeout_ms);
rd_kafka_topic_t *rd_kafka_topic_new(rd_kafka_t *rk, const char *topic, rd_kafka_topic_conf_t *conf);
void rd_kafka_topic_destroy(rd_kafka_topic_t *rkt);
const char *rd_kafka_topic_name(const rd_kafka_topic_t *rkt);
void *rd_kafka_topic_opaque(const rd_kafka_topic_t *rkt);
int rd_kafka_poll(rd_kafka_t *rk, int timeout_ms);
void rd_kafka_yield(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_pause_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_resume_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_query_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_get_watermark_offsets(rd_kafka_t *rk, const char *topic, int32_t partition, int64_t *low, int64_t *high);
rd_kafka_resp_err_t rd_kafka_offsets_for_times(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets, int timeout_ms);
void *rd_kafka_mem_calloc(rd_kafka_t *rk, size_t num, size_t size);
void *rd_kafka_mem_malloc(rd_kafka_t *rk, size_t size);
void rd_kafka_mem_free(rd_kafka_t *rk, void *ptr);
rd_kafka_queue_t *rd_kafka_queue_new(rd_kafka_t *rk);
void rd_kafka_queue_destroy(rd_kafka_queue_t *rkqu);
rd_kafka_queue_t *rd_kafka_queue_get_main(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk, const char *username, const char *password);
rd_kafka_queue_t *rd_kafka_queue_get_consumer(rd_kafka_t *rk);
rd_kafka_queue_t *rd_kafka_queue_get_partition(rd_kafka_t *rk, const char *topic, int32_t partition);
rd_kafka_queue_t *rd_kafka_queue_get_background(rd_kafka_t *rk);
void rd_kafka_queue_forward(rd_kafka_queue_t *src, rd_kafka_queue_t *dst);
rd_kafka_resp_err_t rd_kafka_set_log_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
size_t rd_kafka_queue_length(rd_kafka_queue_t *rkqu);
void rd_kafka_queue_io_event_enable(rd_kafka_queue_t *rkqu, int fd, const void *payload, size_t size);
void rd_kafka_queue_cb_event_enable(rd_kafka_queue_t *rkqu, void (*event_cb)(rd_kafka_t *rk, void *qev_opaque), void *qev_opaque);
void rd_kafka_queue_yield(rd_kafka_queue_t *rkqu);
int rd_kafka_consume_start(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
int rd_kafka_consume_start_queue(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, rd_kafka_queue_t *rkqu);
int rd_kafka_consume_stop(rd_kafka_topic_t *rkt, int32_t partition);
rd_kafka_resp_err_t rd_kafka_seek(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset, int timeout_ms);
rd_kafka_error_t *rd_kafka_seek_partitions(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_message_t *rd_kafka_consume(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms);
ssize_t rd_kafka_consume_batch(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback(rd_kafka_topic_t *rkt, int32_t partition, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_message_t *rd_kafka_consume_queue(rd_kafka_queue_t *rkqu, int timeout_ms);
ssize_t rd_kafka_consume_batch_queue(rd_kafka_queue_t *rkqu, int timeout_ms, rd_kafka_message_t **rkmessages, size_t rkmessages_size);
int rd_kafka_consume_callback_queue(rd_kafka_queue_t *rkqu, int timeout_ms, void (*consume_cb)(rd_kafka_message_t *rkmessage, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_offset_store(rd_kafka_topic_t *rkt, int32_t partition, int64_t offset);
rd_kafka_resp_err_t rd_kafka_offsets_store(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *offsets);
rd_kafka_error_t *rd_kafka_offset_store_message(rd_kafka_message_t *rkmessage);
rd_kafka_resp_err_t rd_kafka_subscribe(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *topics);
rd_kafka_resp_err_t rd_kafka_unsubscribe(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_subscription(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **topics);
rd_kafka_message_t *rd_kafka_consumer_poll(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_consumer_close(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_consumer_close_queue(rd_kafka_t *rk, rd_kafka_queue_t *rkqu);
int rd_kafka_consumer_closed(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_incremental_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_error_t *rd_kafka_incremental_unassign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
const char *rd_kafka_rebalance_protocol(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_assign(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *partitions);
rd_kafka_resp_err_t rd_kafka_assignment(rd_kafka_t *rk, rd_kafka_topic_partition_list_t **partitions);
int rd_kafka_assignment_lost(rd_kafka_t *rk);
rd_kafka_resp_err_t rd_kafka_commit(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, int async);
rd_kafka_resp_err_t rd_kafka_commit_message(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, int async);
rd_kafka_resp_err_t rd_kafka_commit_queue(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_queue_t *rkqu, void (*cb)(rd_kafka_t *rk, rd_kafka_resp_err_t err, rd_kafka_topic_partition_list_t *offsets, void *commit_opaque), void *commit_opaque);
rd_kafka_resp_err_t rd_kafka_committed(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_position(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *partitions);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata(rd_kafka_t *rk);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new(const char *group_id);
rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_new_with_genid(const char *group_id, int32_t generation_id, const char *member_id, const char *group_instance_id);
const char *rd_kafka_consumer_group_metadata_member_id(const rd_kafka_consumer_group_metadata_t *group_metadata);
void rd_kafka_consumer_group_metadata_destroy(rd_kafka_consumer_group_metadata_t *);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_write(const rd_kafka_consumer_group_metadata_t *cgmd, void **bufferp, size_t *sizep);
rd_kafka_error_t *rd_kafka_consumer_group_metadata_read(rd_kafka_consumer_group_metadata_t **cgmdp, const void *buffer, size_t size);
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, void *payload, size_t len, const void *key, size_t keylen, void *msg_opaque);
rd_kafka_resp_err_t rd_kafka_producev(rd_kafka_t *rk, ...);
rd_kafka_error_t *rd_kafka_produceva(rd_kafka_t *rk, const rd_kafka_vu_t *vus, size_t cnt);
int rd_kafka_produce_batch(rd_kafka_topic_t *rkt, int32_t partition, int msgflags, rd_kafka_message_t *rkmessages, int message_cnt);
rd_kafka_resp_err_t rd_kafka_flush(rd_kafka_t *rk, int timeout_ms);
rd_kafka_resp_err_t rd_kafka_purge(rd_kafka_t *rk, int purge_flags);
typedef struct rd_kafka_metadata_broker {
int32_t id;
char *host;
int port;
} rd_kafka_metadata_broker_t;
typedef struct rd_kafka_metadata_partition {
int32_t id;
rd_kafka_resp_err_t err;
int32_t leader;
int replica_cnt;
int32_t *replicas;
int isr_cnt;
int32_t *isrs;
} rd_kafka_metadata_partition_t;
typedef struct rd_kafka_metadata_topic {
char *topic;
int partition_cnt;
struct rd_kafka_metadata_partition *partitions;
rd_kafka_resp_err_t err;
} rd_kafka_metadata_topic_t;
typedef struct rd_kafka_metadata {
int broker_cnt;
struct rd_kafka_metadata_broker *brokers;
int topic_cnt;
struct rd_kafka_metadata_topic *topics;
int32_t orig_broker_id;
char *orig_broker_name;
} rd_kafka_metadata_t;
rd_kafka_resp_err_t rd_kafka_metadata(rd_kafka_t *rk, int all_topics, rd_kafka_topic_t *only_rkt, const struct rd_kafka_metadata **metadatap, int timeout_ms);
void rd_kafka_metadata_destroy(const struct rd_kafka_metadata *metadata);
typedef struct rd_kafka_Node_s rd_kafka_Node_t;
int rd_kafka_Node_id(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_host(const rd_kafka_Node_t *node);
uint16_t rd_kafka_Node_port(const rd_kafka_Node_t *node);
const char *rd_kafka_Node_rack(const rd_kafka_Node_t *node);
struct rd_kafka_group_member_info {
char *member_id;
char *client_id;
char *client_host;
void *member_metadata;
int member_metadata_size;
void *member_assignment;
int member_assignment_size;
};
typedef enum {
RD_KAFKA_CONSUMER_GROUP_STATE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_STATE_PREPARING_REBALANCE = 1,
RD_KAFKA_CONSUMER_GROUP_STATE_COMPLETING_REBALANCE = 2,
RD_KAFKA_CONSUMER_GROUP_STATE_STABLE = 3,
RD_KAFKA_CONSUMER_GROUP_STATE_DEAD = 4,
RD_KAFKA_CONSUMER_GROUP_STATE_EMPTY = 5,
RD_KAFKA_CONSUMER_GROUP_STATE__CNT,
} rd_kafka_consumer_group_state_t;
typedef enum {
RD_KAFKA_CONSUMER_GROUP_TYPE_UNKNOWN = 0,
RD_KAFKA_CONSUMER_GROUP_TYPE_CONSUMER = 1,
RD_KAFKA_CONSUMER_GROUP_TYPE_CLASSIC = 2,
RD_KAFKA_CONSUMER_GROUP_TYPE__CNT,
} rd_kafka_consumer_group_type_t;
struct rd_kafka_group_info {
struct rd_kafka_metadata_broker broker;
char *group;
rd_kafka_resp_err_t err;
char *state;
char *protocol_type;
char *protocol;
struct rd_kafka_group_member_info *members;
int member_cnt;
};
struct rd_kafka_group_list {
struct rd_kafka_group_info *groups;
int group_cnt;
};
rd_kafka_resp_err_t rd_kafka_list_groups(rd_kafka_t *rk, const char *group, const struct rd_kafka_group_list **grplistp, int timeout_ms);
const char *rd_kafka_consumer_group_state_name(rd_kafka_consumer_group_state_t state);
rd_kafka_consumer_group_state_t rd_kafka_consumer_group_state_code(const char *name);
const char *rd_kafka_consumer_group_type_name(rd_kafka_consumer_group_type_t type);
rd_kafka_consumer_group_type_t rd_kafka_consumer_group_type_code(const char *name);
void rd_kafka_group_list_destroy(const struct rd_kafka_group_list *grplist);
int rd_kafka_brokers_add(rd_kafka_t *rk, const char *brokerlist);
void rd_kafka_set_logger(rd_kafka_t *rk, void (*func)(const rd_kafka_t *rk, int level, const char *fac, const char *buf));
void rd_kafka_set_log_level(rd_kafka_t *rk, int level);
void rd_kafka_log_print(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
void rd_kafka_log_syslog(const rd_kafka_t *rk, int level, const char *fac, const char *buf);
int rd_kafka_outq_len(rd_kafka_t *rk);
void rd_kafka_dump(FILE *fp, rd_kafka_t *rk);
int rd_kafka_thread_cnt(void);
typedef enum rd_kafka_thread_type_t {
RD_KAFKA_THREAD_MAIN,
RD_KAFKA_THREAD_BACKGROUND,
RD_KAFKA_THREAD_BROKER,
} rd_kafka_thread_type_t;
int rd_kafka_wait_destroyed(int timeout_ms);
int rd_kafka_unittest(void);
rd_kafka_resp_err_t rd_kafka_poll_set_consumer(rd_kafka_t *rk);
typedef int rd_kafka_event_type_t;
rd_kafka_event_type_t rd_kafka_event_type(const rd_kafka_event_t *rkev);
const char *rd_kafka_event_name(const rd_kafka_event_t *rkev);
void rd_kafka_event_destroy(rd_kafka_event_t *rkev);
const rd_kafka_message_t *rd_kafka_event_message_next(rd_kafka_event_t *rkev);
size_t rd_kafka_event_message_array(rd_kafka_event_t *rkev, const rd_kafka_message_t **rkmessages, size_t size);
size_t rd_kafka_event_message_count(rd_kafka_event_t *rkev);
const char *rd_kafka_event_config_string(rd_kafka_event_t *rkev);
rd_kafka_resp_err_t rd_kafka_event_error(rd_kafka_event_t *rkev);
const char *rd_kafka_event_error_string(rd_kafka_event_t *rkev);
int rd_kafka_event_error_is_fatal(rd_kafka_event_t *rkev);
void *rd_kafka_event_opaque(rd_kafka_event_t *rkev);
int rd_kafka_event_log(rd_kafka_event_t *rkev, const char **fac, const char **str, int *level);
int rd_kafka_event_debug_contexts(rd_kafka_event_t *rkev, char *dst, size_t dstsize);
const char *rd_kafka_event_stats(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_list_t *rd_kafka_event_topic_partition_list(rd_kafka_event_t *rkev);
rd_kafka_topic_partition_t *rd_kafka_event_topic_partition(rd_kafka_event_t *rkev);
typedef rd_kafka_event_t rd_kafka_CreateTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteTopics_result_t;
typedef rd_kafka_event_t rd_kafka_CreateAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeAcls_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteAcls_result_t;
typedef rd_kafka_event_t rd_kafka_CreatePartitions_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_IncrementalAlterConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConfigs_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteRecords_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeConsumerGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteGroups_result_t;
typedef rd_kafka_event_t rd_kafka_DeleteConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_AlterConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ListConsumerGroupOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeTopics_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeCluster_result_t;
typedef rd_kafka_event_t rd_kafka_DescribeUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_AlterUserScramCredentials_result_t;
typedef rd_kafka_event_t rd_kafka_ListOffsets_result_t;
typedef rd_kafka_event_t rd_kafka_ElectLeaders_result_t;
const rd_kafka_CreateTopics_result_t *rd_kafka_event_CreateTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteTopics_result_t *rd_kafka_event_DeleteTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_CreatePartitions_result_t *rd_kafka_event_CreatePartitions_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConfigs_result_t *rd_kafka_event_AlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_IncrementalAlterConfigs_result_t *rd_kafka_event_IncrementalAlterConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConfigs_result_t *rd_kafka_event_DescribeConfigs_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteRecords_result_t *rd_kafka_event_DeleteRecords_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroups_result_t *rd_kafka_event_ListConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeConsumerGroups_result_t *rd_kafka_event_DescribeConsumerGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeTopics_result_t *rd_kafka_event_DescribeTopics_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeCluster_result_t *rd_kafka_event_DescribeCluster_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteGroups_result_t *rd_kafka_event_DeleteGroups_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteConsumerGroupOffsets_result_t *rd_kafka_event_DeleteConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_CreateAcls_result_t *rd_kafka_event_CreateAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeAcls_result_t *rd_kafka_event_DescribeAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_DeleteAcls_result_t *rd_kafka_event_DeleteAcls_result(rd_kafka_event_t *rkev);
const rd_kafka_ListConsumerGroupOffsets_result_t *rd_kafka_event_ListConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterConsumerGroupOffsets_result_t *rd_kafka_event_AlterConsumerGroupOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_ListOffsets_result_t *rd_kafka_event_ListOffsets_result(rd_kafka_event_t *rkev);
const rd_kafka_DescribeUserScramCredentials_result_t *rd_kafka_event_DescribeUserScramCredentials_result(rd_kafka_event_t *rkev);
const rd_kafka_AlterUserScramCredentials_result_t *rd_kafka_event_AlterUserScramCredentials_result(rd_kafka_event_t *rkev);
const rd_kafka_ElectLeaders_result_t *rd_kafka_event_ElectLeaders_result(rd_kafka_event_t *rkev);
rd_kafka_event_t *rd_kafka_queue_poll(rd_kafka_queue_t *rkqu, int timeout_ms);
int rd_kafka_queue_poll_callback(rd_kafka_queue_t *rkqu, int timeout_ms);
typedef rd_kafka_resp_err_t (rd_kafka_plugin_f_conf_init_t)(rd_kafka_conf_t *conf, void **plug_opaquep, char *errstr, size_t errstr_size);
typedef rd_kafka_conf_res_t (rd_kafka_interceptor_f_on_conf_set_t)(rd_kafka_conf_t *conf, const char *name, const char *val, char *errstr, size_t errstr_size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_dup_t)(rd_kafka_conf_t *new_conf, const rd_kafka_conf_t *old_conf, size_t filter_cnt, const char **filter, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_conf_destroy_t)(void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_new_t)(rd_kafka_t *rk, const rd_kafka_conf_t *conf, void *ic_opaque, char *errstr, size_t errstr_size);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_destroy_t)(rd_kafka_t *rk, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_send_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_acknowledgement_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_consume_t)(rd_kafka_t *rk, rd_kafka_message_t *rkmessage, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_commit_t)(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_request_sent_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_response_received_t)(rd_kafka_t *rk, int sockfd, const char *brokername, int32_t brokerid, int16_t ApiKey, int16_t ApiVersion, int32_t CorrId, size_t size, int64_t rtt, rd_kafka_resp_err_t err, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_start_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_thread_exit_t)(rd_kafka_t *rk, rd_kafka_thread_type_t thread_type, const char *thread_name, void *ic_opaque);
typedef rd_kafka_resp_err_t (rd_kafka_interceptor_f_on_broker_state_change_t)(rd_kafka_t *rk, int32_t broker_id, const char *secproto, const char *name, int port, const char *state, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_set(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_set_t *on_conf_set, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_dup(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_dup_t *on_conf_dup, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_conf_destroy(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_conf_destroy_t *on_conf_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_conf_interceptor_add_on_new(rd_kafka_conf_t *conf, const char *ic_name, rd_kafka_interceptor_f_on_new_t *on_new, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_destroy(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_destroy_t *on_destroy, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_send(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_send_t *on_send, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_acknowledgement(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_acknowledgement_t *on_acknowledgement, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_consume(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_consume_t *on_consume, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_commit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_commit_t *on_commit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_request_sent(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_request_sent_t *on_request_sent, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_response_received(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_response_received_t *on_response_received, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_start(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_start_t *on_thread_start, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_thread_exit(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_thread_exit_t *on_thread_exit, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_interceptor_add_on_broker_state_change(rd_kafka_t *rk, const char *ic_name, rd_kafka_interceptor_f_on_broker_state_change_t *on_broker_state_change, void *ic_opaque);
rd_kafka_resp_err_t rd_kafka_topic_result_error(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_error_string(const rd_kafka_topic_result_t *topicres);
const char *rd_kafka_topic_result_name(const rd_kafka_topic_result_t *topicres);
const rd_kafka_error_t *rd_kafka_group_result_error(const rd_kafka_group_result_t *groupres);
const char *rd_kafka_group_result_name(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_list_t *rd_kafka_group_result_partitions(const rd_kafka_group_result_t *groupres);
const rd_kafka_topic_partition_t *rd_kafka_topic_partition_result_partition(const rd_kafka_topic_partition_result_t *partition_result);
const rd_kafka_error_t *rd_kafka_topic_partition_result_error(const rd_kafka_topic_partition_result_t *partition_result);
typedef enum rd_kafka_admin_op_t {
RD_KAFKA_ADMIN_OP_ANY = 0,
RD_KAFKA_ADMIN_OP_CREATETOPICS,
RD_KAFKA_ADMIN_OP_DELETETOPICS,
RD_KAFKA_ADMIN_OP_CREATEPARTITIONS,
RD_KAFKA_ADMIN_OP_ALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBECONFIGS,
RD_KAFKA_ADMIN_OP_DELETERECORDS,
RD_KAFKA_ADMIN_OP_DELETEGROUPS,
RD_KAFKA_ADMIN_OP_DELETECONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_CREATEACLS,
RD_KAFKA_ADMIN_OP_DESCRIBEACLS,
RD_KAFKA_ADMIN_OP_DELETEACLS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_DESCRIBECONSUMERGROUPS,
RD_KAFKA_ADMIN_OP_LISTCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_ALTERCONSUMERGROUPOFFSETS,
RD_KAFKA_ADMIN_OP_INCREMENTALALTERCONFIGS,
RD_KAFKA_ADMIN_OP_DESCRIBEUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_ALTERUSERSCRAMCREDENTIALS,
RD_KAFKA_ADMIN_OP_DESCRIBETOPICS,
RD_KAFKA_ADMIN_OP_DESCRIBECLUSTER,
RD_KAFKA_ADMIN_OP_LISTOFFSETS,
RD_KAFKA_ADMIN_OP_ELECTLEADERS,
RD_KAFKA_ADMIN_OP__CNT,
} rd_kafka_admin_op_t;
typedef struct rd_kafka_AdminOptions_s rd_kafka_AdminOptions_t;
typedef enum rd_kafka_IsolationLevel_t {
RD_KAFKA_ISOLATION_LEVEL_READ_UNCOMMITTED = 0,
RD_KAFKA_ISOLATION_LEVEL_READ_COMMITTED = 1,
} rd_kafka_IsolationLevel_t;
rd_kafka_AdminOptions_t *rd_kafka_AdminOptions_new(rd_kafka_t *rk, rd_kafka_admin_op_t for_api);
void rd_kafka_AdminOptions_destroy(rd_kafka_AdminOptions_t *options);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_request_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_operation_timeout(rd_kafka_AdminOptions_t *options, int timeout_ms, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_validate_only(rd_kafka_AdminOptions_t *options, int true_or_false, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_AdminOptions_set_broker(rd_kafka_AdminOptions_t *options, int32_t broker_id, char *errstr, size_t errstr_size);
rd_kafka_error_t *rd_kafka_AdminOptions_set_require_stable_offsets(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_include_authorized_operations(rd_kafka_AdminOptions_t *options, int true_or_false);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_states(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_state_t *consumer_group_states, size_t consumer_group_states_cnt);
rd_kafka_error_t *rd_kafka_AdminOptions_set_match_consumer_group_types(rd_kafka_AdminOptions_t *options, const rd_kafka_consumer_group_type_t *consumer_group_types, size_t consumer_group_types_cnt);
rd_kafka_error_t *rd_kafka_AdminOptions_set_isolation_level(rd_kafka_AdminOptions_t *options, rd_kafka_IsolationLevel_t value);
void rd_kafka_AdminOptions_set_opaque(rd_kafka_AdminOptions_t *options, void *ev_opaque);
typedef enum rd_kafka_AclOperation_t {
RD_KAFKA_ACL_OPERATION_UNKNOWN = 0,
RD_KAFKA_ACL_OPERATION_ANY = 1,
RD_KAFKA_ACL_OPERATION_ALL = 2,
RD_KAFKA_ACL_OPERATION_READ = 3,
RD_KAFKA_ACL_OPERATION_WRITE = 4,
RD_KAFKA_ACL_OPERATION_CREATE = 5,
RD_KAFKA_ACL_OPERATION_DELETE = 6,
RD_KAFKA_ACL_OPERATION_ALTER = 7,
RD_KAFKA_ACL_OPERATION_DESCRIBE = 8,
RD_KAFKA_ACL_OPERATION_CLUSTER_ACTION = 9,
RD_KAFKA_ACL_OPERATION_DESCRIBE_CONFIGS = 10,
RD_KAFKA_ACL_OPERATION_ALTER_CONFIGS = 11,
RD_KAFKA_ACL_OPERATION_IDEMPOTENT_WRITE = 12,
RD_KAFKA_ACL_OPERATION__CNT,
} rd_kafka_AclOperation_t;
typedef struct rd_kafka_NewTopic_s rd_kafka_NewTopic_t;
rd_kafka_NewTopic_t *rd_kafka_NewTopic_new(const char *topic, int num_partitions, int replication_factor, char *errstr, size_t errstr_size);
void rd_kafka_NewTopic_destroy(rd_kafka_NewTopic_t *new_topic);
void rd_kafka_NewTopic_destroy_array(rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_replica_assignment(rd_kafka_NewTopic_t *new_topic, int32_t partition, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_NewTopic_set_config(rd_kafka_NewTopic_t *new_topic, const char *name, const char *value);
void rd_kafka_CreateTopics(rd_kafka_t *rk, rd_kafka_NewTopic_t **new_topics, size_t new_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreateTopics_result_topics(const rd_kafka_CreateTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteTopic_s rd_kafka_DeleteTopic_t;
rd_kafka_DeleteTopic_t *rd_kafka_DeleteTopic_new(const char *topic);
void rd_kafka_DeleteTopic_destroy(rd_kafka_DeleteTopic_t *del_topic);
void rd_kafka_DeleteTopic_destroy_array(rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt);
void rd_kafka_DeleteTopics(rd_kafka_t *rk, rd_kafka_DeleteTopic_t **del_topics, size_t del_topic_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_DeleteTopics_result_topics(const rd_kafka_DeleteTopics_result_t *result, size_t *cntp);
typedef struct rd_kafka_NewPartitions_s rd_kafka_NewPartitions_t;
rd_kafka_NewPartitions_t *rd_kafka_NewPartitions_new(const char *topic, size_t new_total_cnt, char *errstr, size_t errstr_size);
void rd_kafka_NewPartitions_destroy(rd_kafka_NewPartitions_t *new_parts);
void rd_kafka_NewPartitions_destroy_array(rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt);
rd_kafka_resp_err_t rd_kafka_NewPartitions_set_replica_assignment(rd_kafka_NewPartitions_t *new_parts, int32_t new_partition_idx, int32_t *broker_ids, size_t broker_id_cnt, char *errstr, size_t errstr_size);
void rd_kafka_CreatePartitions(rd_kafka_t *rk, rd_kafka_NewPartitions_t **new_parts, size_t new_parts_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_result_t **rd_kafka_CreatePartitions_result_topics(const rd_kafka_CreatePartitions_result_t *result, size_t *cntp);
typedef enum rd_kafka_ConfigSource_t {
RD_KAFKA_CONFIG_SOURCE_UNKNOWN_CONFIG = 0,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_TOPIC_CONFIG = 1,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_BROKER_CONFIG = 2,
RD_KAFKA_CONFIG_SOURCE_DYNAMIC_DEFAULT_BROKER_CONFIG = 3,
RD_KAFKA_CONFIG_SOURCE_STATIC_BROKER_CONFIG = 4,
RD_KAFKA_CONFIG_SOURCE_DEFAULT_CONFIG = 5,
RD_KAFKA_CONFIG_SOURCE__CNT,
} rd_kafka_ConfigSource_t;
const char *rd_kafka_ConfigSource_name(rd_kafka_ConfigSource_t confsource);
typedef struct rd_kafka_ConfigEntry_s rd_kafka_ConfigEntry_t;
const char *rd_kafka_ConfigEntry_name(const rd_kafka_ConfigEntry_t *entry);
const char *rd_kafka_ConfigEntry_value(const rd_kafka_ConfigEntry_t *entry);
rd_kafka_ConfigSource_t rd_kafka_ConfigEntry_source(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_read_only(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_default(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_sensitive(const rd_kafka_ConfigEntry_t *entry);
int rd_kafka_ConfigEntry_is_synonym(const rd_kafka_ConfigEntry_t *entry);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigEntry_synonyms(const rd_kafka_ConfigEntry_t *entry, size_t *cntp);
typedef enum rd_kafka_ResourceType_t {
RD_KAFKA_RESOURCE_UNKNOWN = 0,
RD_KAFKA_RESOURCE_ANY = 1,
RD_KAFKA_RESOURCE_TOPIC = 2,
RD_KAFKA_RESOURCE_GROUP = 3,
RD_KAFKA_RESOURCE_BROKER = 4,
RD_KAFKA_RESOURCE_TRANSACTIONAL_ID = 5,
RD_KAFKA_RESOURCE__CNT,
} rd_kafka_ResourceType_t;
typedef enum rd_kafka_ResourcePatternType_t {
RD_KAFKA_RESOURCE_PATTERN_UNKNOWN = 0,
RD_KAFKA_RESOURCE_PATTERN_ANY = 1,
RD_KAFKA_RESOURCE_PATTERN_MATCH = 2,
RD_KAFKA_RESOURCE_PATTERN_LITERAL = 3,
RD_KAFKA_RESOURCE_PATTERN_PREFIXED = 4,
RD_KAFKA_RESOURCE_PATTERN_TYPE__CNT,
} rd_kafka_ResourcePatternType_t;
typedef enum rd_kafka_AlterConfigOpType_t {
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SET = 0,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_DELETE = 1,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_APPEND = 2,
RD_KAFKA_ALTER_CONFIG_OP_TYPE_SUBTRACT = 3,
RD_KAFKA_ALTER_CONFIG_OP_TYPE__CNT,
} rd_kafka_AlterConfigOpType_t;
const char *rd_kafka_ResourcePatternType_name(rd_kafka_ResourcePatternType_t resource_pattern_type);
const char *rd_kafka_ResourceType_name(rd_kafka_ResourceType_t restype);
typedef struct rd_kafka_ConfigResource_s rd_kafka_ConfigResource_t;
rd_kafka_ConfigResource_t *rd_kafka_ConfigResource_new(rd_kafka_ResourceType_t restype, const char *resname);
void rd_kafka_ConfigResource_destroy(rd_kafka_ConfigResource_t *config);
void rd_kafka_ConfigResource_destroy_array(rd_kafka_ConfigResource_t **config, size_t config_cnt);
rd_kafka_resp_err_t rd_kafka_ConfigResource_set_config(rd_kafka_ConfigResource_t *config, const char *name, const char *value);
rd_kafka_error_t *rd_kafka_ConfigResource_add_incremental_config(rd_kafka_ConfigResource_t *config, const char *name, rd_kafka_AlterConfigOpType_t op_type, const char *value);
const rd_kafka_ConfigEntry_t **rd_kafka_ConfigResource_configs(const rd_kafka_ConfigResource_t *config, size_t *cntp);
rd_kafka_ResourceType_t rd_kafka_ConfigResource_type(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_name(const rd_kafka_ConfigResource_t *config);
rd_kafka_resp_err_t rd_kafka_ConfigResource_error(const rd_kafka_ConfigResource_t *config);
const char *rd_kafka_ConfigResource_error_string(const rd_kafka_ConfigResource_t *config);
void rd_kafka_AlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_AlterConfigs_result_resources(const rd_kafka_AlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_IncrementalAlterConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_IncrementalAlterConfigs_result_resources(const rd_kafka_IncrementalAlterConfigs_result_t *result, size_t *cntp);
void rd_kafka_DescribeConfigs(rd_kafka_t *rk, rd_kafka_ConfigResource_t **configs, size_t config_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConfigResource_t **rd_kafka_DescribeConfigs_result_resources(const rd_kafka_DescribeConfigs_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteRecords_s rd_kafka_DeleteRecords_t;
rd_kafka_DeleteRecords_t *rd_kafka_DeleteRecords_new(const rd_kafka_topic_partition_list_t *before_offsets);
void rd_kafka_DeleteRecords_destroy(rd_kafka_DeleteRecords_t *del_records);
void rd_kafka_DeleteRecords_destroy_array(rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt);
void rd_kafka_DeleteRecords(rd_kafka_t *rk, rd_kafka_DeleteRecords_t **del_records, size_t del_record_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_list_t *rd_kafka_DeleteRecords_result_offsets(const rd_kafka_DeleteRecords_result_t *result);
typedef struct rd_kafka_TopicCollection_s rd_kafka_TopicCollection_t;
typedef struct rd_kafka_TopicPartitionInfo_s rd_kafka_TopicPartitionInfo_t;
typedef struct rd_kafka_TopicDescription_s rd_kafka_TopicDescription_t;
rd_kafka_TopicCollection_t *rd_kafka_TopicCollection_of_topic_names(const char **topics, size_t topics_cnt);
void rd_kafka_TopicCollection_destroy(rd_kafka_TopicCollection_t *topics);
void rd_kafka_DescribeTopics(rd_kafka_t *rk, const rd_kafka_TopicCollection_t *topics, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_TopicDescription_t **rd_kafka_DescribeTopics_result_topics(const rd_kafka_DescribeTopics_result_t *result, size_t *cntp);
const rd_kafka_TopicPartitionInfo_t **rd_kafka_TopicDescription_partitions(const rd_kafka_TopicDescription_t *topicdesc, size_t *cntp);
const int rd_kafka_TopicPartitionInfo_partition(const rd_kafka_TopicPartitionInfo_t *partition);
const rd_kafka_Node_t *rd_kafka_TopicPartitionInfo_leader(const rd_kafka_TopicPartitionInfo_t *partition);
const rd_kafka_Node_t **rd_kafka_TopicPartitionInfo_isr(const rd_kafka_TopicPartitionInfo_t *partition, size_t *cntp);
const rd_kafka_Node_t **rd_kafka_TopicPartitionInfo_replicas(const rd_kafka_TopicPartitionInfo_t *partition, size_t *cntp);
const rd_kafka_AclOperation_t *rd_kafka_TopicDescription_authorized_operations(const rd_kafka_TopicDescription_t *topicdesc, size_t *cntp);
const char *rd_kafka_TopicDescription_name(const rd_kafka_TopicDescription_t *topicdesc);
const rd_kafka_Uuid_t *rd_kafka_TopicDescription_topic_id(const rd_kafka_TopicDescription_t *topicdesc);
int rd_kafka_TopicDescription_is_internal(const rd_kafka_TopicDescription_t *topicdesc);
const rd_kafka_error_t *rd_kafka_TopicDescription_error(const rd_kafka_TopicDescription_t *topicdesc);
void rd_kafka_DescribeCluster(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_Node_t **rd_kafka_DescribeCluster_result_nodes(const rd_kafka_DescribeCluster_result_t *result, size_t *cntp);
const rd_kafka_AclOperation_t *rd_kafka_DescribeCluster_result_authorized_operations(const rd_kafka_DescribeCluster_result_t *result, size_t *cntp);
const rd_kafka_Node_t *rd_kafka_DescribeCluster_result_controller(const rd_kafka_DescribeCluster_result_t *result);
const char *rd_kafka_DescribeCluster_result_cluster_id(const rd_kafka_DescribeCluster_result_t *result);
typedef struct rd_kafka_ConsumerGroupListing_s rd_kafka_ConsumerGroupListing_t;
typedef struct rd_kafka_ListConsumerGroupsResult_s rd_kafka_ListConsumerGroupsResult_t;
void rd_kafka_ListConsumerGroups(rd_kafka_t *rk, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const char *rd_kafka_ConsumerGroupListing_group_id(const rd_kafka_ConsumerGroupListing_t *grplist);
int rd_kafka_ConsumerGroupListing_is_simple_consumer_group(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupListing_state(const rd_kafka_ConsumerGroupListing_t *grplist);
rd_kafka_consumer_group_type_t rd_kafka_ConsumerGroupListing_type(const rd_kafka_ConsumerGroupListing_t *grplist);
const rd_kafka_ConsumerGroupListing_t **rd_kafka_ListConsumerGroups_result_valid(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
const rd_kafka_error_t **rd_kafka_ListConsumerGroups_result_errors(const rd_kafka_ListConsumerGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ConsumerGroupDescription_s rd_kafka_ConsumerGroupDescription_t;
typedef struct rd_kafka_MemberDescription_s rd_kafka_MemberDescription_t;
typedef struct rd_kafka_MemberAssignment_s rd_kafka_MemberAssignment_t;
void rd_kafka_DescribeConsumerGroups(rd_kafka_t *rk, const char **groups, size_t groups_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_ConsumerGroupDescription_t **rd_kafka_DescribeConsumerGroups_result_groups(const rd_kafka_DescribeConsumerGroups_result_t *result, size_t *cntp);
const char *rd_kafka_ConsumerGroupDescription_group_id(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_error_t *rd_kafka_ConsumerGroupDescription_error(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
int rd_kafka_ConsumerGroupDescription_is_simple_consumer_group(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const char *rd_kafka_ConsumerGroupDescription_partition_assignor(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_AclOperation_t *rd_kafka_ConsumerGroupDescription_authorized_operations(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t *cntp);
rd_kafka_consumer_group_state_t rd_kafka_ConsumerGroupDescription_state(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_Node_t *rd_kafka_ConsumerGroupDescription_coordinator(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
size_t rd_kafka_ConsumerGroupDescription_member_count(const rd_kafka_ConsumerGroupDescription_t *grpdesc);
const rd_kafka_MemberDescription_t *rd_kafka_ConsumerGroupDescription_member(const rd_kafka_ConsumerGroupDescription_t *grpdesc, size_t idx);
const char *rd_kafka_MemberDescription_client_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_group_instance_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_consumer_id(const rd_kafka_MemberDescription_t *member);
const char *rd_kafka_MemberDescription_host(const rd_kafka_MemberDescription_t *member);
const rd_kafka_MemberAssignment_t *rd_kafka_MemberDescription_assignment(const rd_kafka_MemberDescription_t *member);
const rd_kafka_topic_partition_list_t *rd_kafka_MemberAssignment_partitions(const rd_kafka_MemberAssignment_t *assignment);
typedef struct rd_kafka_DeleteGroup_s rd_kafka_DeleteGroup_t;
rd_kafka_DeleteGroup_t *rd_kafka_DeleteGroup_new(const char *group);
void rd_kafka_DeleteGroup_destroy(rd_kafka_DeleteGroup_t *del_group);
void rd_kafka_DeleteGroup_destroy_array(rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt);
void rd_kafka_DeleteGroups(rd_kafka_t *rk, rd_kafka_DeleteGroup_t **del_groups, size_t del_group_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteGroups_result_groups(const rd_kafka_DeleteGroups_result_t *result, size_t *cntp);
typedef struct rd_kafka_ListConsumerGroupOffsets_s rd_kafka_ListConsumerGroupOffsets_t;
rd_kafka_ListConsumerGroupOffsets_t *rd_kafka_ListConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ListConsumerGroupOffsets_destroy(rd_kafka_ListConsumerGroupOffsets_t *list_grpoffsets);
void rd_kafka_ListConsumerGroupOffsets_destroy_array(rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffset_cnt);
void rd_kafka_ListConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_ListConsumerGroupOffsets_t **list_grpoffsets, size_t list_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_ListConsumerGroupOffsets_result_groups(const rd_kafka_ListConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_AlterConsumerGroupOffsets_s rd_kafka_AlterConsumerGroupOffsets_t;
rd_kafka_AlterConsumerGroupOffsets_t *rd_kafka_AlterConsumerGroupOffsets_new(const char *group_id, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_AlterConsumerGroupOffsets_destroy(rd_kafka_AlterConsumerGroupOffsets_t *alter_grpoffsets);
void rd_kafka_AlterConsumerGroupOffsets_destroy_array(rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffset_cnt);
void rd_kafka_AlterConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_AlterConsumerGroupOffsets_t **alter_grpoffsets, size_t alter_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_AlterConsumerGroupOffsets_result_groups(const rd_kafka_AlterConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef struct rd_kafka_DeleteConsumerGroupOffsets_s rd_kafka_DeleteConsumerGroupOffsets_t;
rd_kafka_DeleteConsumerGroupOffsets_t *rd_kafka_DeleteConsumerGroupOffsets_new(const char *group, const rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_DeleteConsumerGroupOffsets_destroy(rd_kafka_DeleteConsumerGroupOffsets_t *del_grpoffsets);
void rd_kafka_DeleteConsumerGroupOffsets_destroy_array(rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffset_cnt);
void rd_kafka_DeleteConsumerGroupOffsets(rd_kafka_t *rk, rd_kafka_DeleteConsumerGroupOffsets_t **del_grpoffsets, size_t del_grpoffsets_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_group_result_t **rd_kafka_DeleteConsumerGroupOffsets_result_groups(const rd_kafka_DeleteConsumerGroupOffsets_result_t *result, size_t *cntp);
typedef enum rd_kafka_OffsetSpec_t {
RD_KAFKA_OFFSET_SPEC_MAX_TIMESTAMP = (- 3),
RD_KAFKA_OFFSET_SPEC_EARLIEST = (- 2),
RD_KAFKA_OFFSET_SPEC_LATEST = (- 1),
} rd_kafka_OffsetSpec_t;
typedef struct rd_kafka_ListOffsetsResultInfo_s rd_kafka_ListOffsetsResultInfo_t;
const rd_kafka_topic_partition_t *rd_kafka_ListOffsetsResultInfo_topic_partition(const rd_kafka_ListOffsetsResultInfo_t *result_info);
int64_t rd_kafka_ListOffsetsResultInfo_timestamp(const rd_kafka_ListOffsetsResultInfo_t *result_info);
const rd_kafka_ListOffsetsResultInfo_t **rd_kafka_ListOffsets_result_infos(const rd_kafka_ListOffsets_result_t *result, size_t *cntp);
void rd_kafka_ListOffsets(rd_kafka_t *rk, rd_kafka_topic_partition_list_t *topic_partitions, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef enum rd_kafka_ScramMechanism_t {
RD_KAFKA_SCRAM_MECHANISM_UNKNOWN = 0,
RD_KAFKA_SCRAM_MECHANISM_SHA_256 = 1,
RD_KAFKA_SCRAM_MECHANISM_SHA_512 = 2,
RD_KAFKA_SCRAM_MECHANISM__CNT,
} rd_kafka_ScramMechanism_t;
typedef struct rd_kafka_ScramCredentialInfo_s rd_kafka_ScramCredentialInfo_t;
rd_kafka_ScramMechanism_t rd_kafka_ScramCredentialInfo_mechanism(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
int32_t rd_kafka_ScramCredentialInfo_iterations(const rd_kafka_ScramCredentialInfo_t *scram_credential_info);
typedef struct rd_kafka_UserScramCredentialsDescription_s rd_kafka_UserScramCredentialsDescription_t;
const char *rd_kafka_UserScramCredentialsDescription_user(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_error_t *rd_kafka_UserScramCredentialsDescription_error(const rd_kafka_UserScramCredentialsDescription_t *description);
size_t rd_kafka_UserScramCredentialsDescription_scramcredentialinfo_count(const rd_kafka_UserScramCredentialsDescription_t *description);
const rd_kafka_ScramCredentialInfo_t *rd_kafka_UserScramCredentialsDescription_scramcredentialinfo(const rd_kafka_UserScramCredentialsDescription_t *description, size_t idx);
const rd_kafka_UserScramCredentialsDescription_t **rd_kafka_DescribeUserScramCredentials_result_descriptions(const rd_kafka_DescribeUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_DescribeUserScramCredentials(rd_kafka_t *rk, const char **users, size_t user_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_UserScramCredentialAlteration_s rd_kafka_UserScramCredentialAlteration_t;
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialUpsertion_new(const char *username, rd_kafka_ScramMechanism_t mechanism, int32_t iterations, const unsigned char *password, size_t password_size, const unsigned char *salt, size_t salt_size);
rd_kafka_UserScramCredentialAlteration_t *rd_kafka_UserScramCredentialDeletion_new(const char *username, rd_kafka_ScramMechanism_t mechanism);
void rd_kafka_UserScramCredentialAlteration_destroy(rd_kafka_UserScramCredentialAlteration_t *alteration);
void rd_kafka_UserScramCredentialAlteration_destroy_array(rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt);
typedef struct rd_kafka_AlterUserScramCredentials_result_response_s rd_kafka_AlterUserScramCredentials_result_response_t;
const char *rd_kafka_AlterUserScramCredentials_result_response_user(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_error_t *rd_kafka_AlterUserScramCredentials_result_response_error(const rd_kafka_AlterUserScramCredentials_result_response_t *response);
const rd_kafka_AlterUserScramCredentials_result_response_t **rd_kafka_AlterUserScramCredentials_result_responses(const rd_kafka_AlterUserScramCredentials_result_t *result, size_t *cntp);
void rd_kafka_AlterUserScramCredentials(rd_kafka_t *rk, rd_kafka_UserScramCredentialAlteration_t **alterations, size_t alteration_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_AclBinding_s rd_kafka_AclBinding_t;
typedef rd_kafka_AclBinding_t rd_kafka_AclBindingFilter_t;
const rd_kafka_error_t *rd_kafka_acl_result_error(const rd_kafka_acl_result_t *aclres);
const char *rd_kafka_AclOperation_name(rd_kafka_AclOperation_t acl_operation);
typedef enum rd_kafka_AclPermissionType_t {
RD_KAFKA_ACL_PERMISSION_TYPE_UNKNOWN = 0,
RD_KAFKA_ACL_PERMISSION_TYPE_ANY = 1,
RD_KAFKA_ACL_PERMISSION_TYPE_DENY = 2,
RD_KAFKA_ACL_PERMISSION_TYPE_ALLOW = 3,
RD_KAFKA_ACL_PERMISSION_TYPE__CNT,
} rd_kafka_AclPermissionType_t;
const char *rd_kafka_AclPermissionType_name(rd_kafka_AclPermissionType_t acl_permission_type);
rd_kafka_AclBinding_t *rd_kafka_AclBinding_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_AclBindingFilter_t *rd_kafka_AclBindingFilter_new(rd_kafka_ResourceType_t restype, const char *name, rd_kafka_ResourcePatternType_t resource_pattern_type, const char *principal, const char *host, rd_kafka_AclOperation_t operation, rd_kafka_AclPermissionType_t permission_type, char *errstr, size_t errstr_size);
rd_kafka_ResourceType_t rd_kafka_AclBinding_restype(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_name(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_principal(const rd_kafka_AclBinding_t *acl);
const char *rd_kafka_AclBinding_host(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclOperation_t rd_kafka_AclBinding_operation(const rd_kafka_AclBinding_t *acl);
rd_kafka_AclPermissionType_t rd_kafka_AclBinding_permission_type(const rd_kafka_AclBinding_t *acl);
rd_kafka_ResourcePatternType_t rd_kafka_AclBinding_resource_pattern_type(const rd_kafka_AclBinding_t *acl);
const rd_kafka_error_t *rd_kafka_AclBinding_error(const rd_kafka_AclBinding_t *acl);
void rd_kafka_AclBinding_destroy(rd_kafka_AclBinding_t *acl_binding);
void rd_kafka_AclBinding_destroy_array(rd_kafka_AclBinding_t **acl_bindings, size_t acl_bindings_cnt);
const rd_kafka_acl_result_t **rd_kafka_CreateAcls_result_acls(const rd_kafka_CreateAcls_result_t *result, size_t *cntp);
void rd_kafka_CreateAcls(rd_kafka_t *rk, rd_kafka_AclBinding_t **new_acls, size_t new_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_AclBinding_t **rd_kafka_DescribeAcls_result_acls(const rd_kafka_DescribeAcls_result_t *result, size_t *cntp);
void rd_kafka_DescribeAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t *acl_filter, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_DeleteAcls_result_response_s rd_kafka_DeleteAcls_result_response_t;
const rd_kafka_DeleteAcls_result_response_t **rd_kafka_DeleteAcls_result_responses(const rd_kafka_DeleteAcls_result_t *result, size_t *cntp);
const rd_kafka_error_t *rd_kafka_DeleteAcls_result_response_error(const rd_kafka_DeleteAcls_result_response_t *result_response);
const rd_kafka_AclBinding_t **rd_kafka_DeleteAcls_result_response_matching_acls(const rd_kafka_DeleteAcls_result_response_t *result_response, size_t *matching_acls_cntp);
void rd_kafka_DeleteAcls(rd_kafka_t *rk, rd_kafka_AclBindingFilter_t **del_acls, size_t del_acls_cnt, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
typedef struct rd_kafka_ElectLeaders_s rd_kafka_ElectLeaders_t;
typedef enum rd_kafka_ElectionType_t {
RD_KAFKA_ELECTION_TYPE_PREFERRED = 0,
RD_KAFKA_ELECTION_TYPE_UNCLEAN = 1,
} rd_kafka_ElectionType_t;
rd_kafka_ElectLeaders_t *rd_kafka_ElectLeaders_new(rd_kafka_ElectionType_t election_type, rd_kafka_topic_partition_list_t *partitions);
void rd_kafka_ElectLeaders_destroy(rd_kafka_ElectLeaders_t *elect_leaders);
void rd_kafka_ElectLeaders(rd_kafka_t *rk, rd_kafka_ElectLeaders_t *elect_leaders, const rd_kafka_AdminOptions_t *options, rd_kafka_queue_t *rkqu);
const rd_kafka_topic_partition_result_t **rd_kafka_ElectLeaders_result_partitions(const rd_kafka_ElectLeaders_result_t *result, size_t *cntp);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token(rd_kafka_t *rk, const char *token_value, int64_t md_lifetime_ms, const char *md_principal_name, const char **extensions, size_t extension_size, char *errstr, size_t errstr_size);
rd_kafka_resp_err_t rd_kafka_oauthbearer_set_token_failure(rd_kafka_t *rk, const char *errstr);
rd_kafka_error_t *rd_kafka_init_transactions(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_begin_transaction(rd_kafka_t *rk);
rd_kafka_error_t *rd_kafka_send_offsets_to_transaction(rd_kafka_t *rk, const rd_kafka_topic_partition_list_t *offsets, const rd_kafka_consumer_group_metadata_t *cgmetadata, int timeout_ms);
rd_kafka_error_t *rd_kafka_commit_transaction(rd_kafka_t *rk, int timeout_ms);
rd_kafka_error_t *rd_kafka_abort_transaction(rd_kafka_t *rk, int timeout_ms);
typedef struct rd_kafka_mock_cluster_s rd_kafka_mock_cluster_t;
rd_kafka_mock_cluster_t *rd_kafka_mock_cluster_new(rd_kafka_t *rk, int broker_cnt);
void rd_kafka_mock_cluster_destroy(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_t *rd_kafka_mock_cluster_handle(const rd_kafka_mock_cluster_t *mcluster);
rd_kafka_mock_cluster_t *rd_kafka_handle_mock_cluster(const rd_kafka_t *rk);
const char *rd_kafka_mock_cluster_bootstraps(const rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_clear_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey);
void rd_kafka_mock_push_request_errors(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, ...);
void rd_kafka_mock_push_request_errors_array(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, size_t cnt, const rd_kafka_resp_err_t *errors);
void rd_kafka_mock_group_initial_rebalance_delay_ms(rd_kafka_mock_cluster_t *mcluster, int32_t delay_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_push_request_error_rtts(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t cnt, ...);
rd_kafka_resp_err_t rd_kafka_mock_broker_error_stack_cnt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int16_t ApiKey, size_t *cntp);
void rd_kafka_mock_topic_set_error(rd_kafka_mock_cluster_t *mcluster, const char *topic, rd_kafka_resp_err_t err);
rd_kafka_resp_err_t rd_kafka_mock_topic_create(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition_cnt, int replication_factor);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_leader(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_partition_set_follower_wmarks(rd_kafka_mock_cluster_t *mcluster, const char *topic, int32_t partition, int64_t lo, int64_t hi);
rd_kafka_resp_err_t rd_kafka_mock_partition_push_leader_response(rd_kafka_mock_cluster_t *mcluster, const char *topic, int partition, int32_t leader_id, int32_t leader_epoch);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_down(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_up(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rtt(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, int rtt_ms);
rd_kafka_resp_err_t rd_kafka_mock_broker_set_rack(rd_kafka_mock_cluster_t *mcluster, int32_t broker_id, const char *rack);
rd_kafka_resp_err_t rd_kafka_mock_coordinator_set(rd_kafka_mock_cluster_t *mcluster, const char *key_type, const char *key, int32_t broker_id);
rd_kafka_resp_err_t rd_kafka_mock_set_apiversion(rd_kafka_mock_cluster_t *mcluster, int16_t ApiKey, int16_t MinVersion, int16_t MaxVersion);
void rd_kafka_mock_start_request_tracking(rd_kafka_mock_cluster_t *mcluster);
void rd_kafka_mock_stop_request_tracking(rd_kafka_mock_cluster_t *mcluster);
typedef struct rd_kafka_mock_request_s rd_kafka_mock_request_t;
void rd_kafka_mock_request_destroy(rd_kafka_mock_request_t *mreq);
void rd_kafka_mock_request_destroy_array(rd_kafka_mock_request_t **mreqs, size_t mreq_cnt);
int32_t rd_kafka_mock_request_id(rd_kafka_mock_request_t *mreq);
int16_t rd_kafka_mock_request_api_key(rd_kafka_mock_request_t *mreq);
int64_t rd_kafka_mock_request_timestamp(rd_kafka_mock_request_t *mreq);
rd_kafka_mock_request_t **rd_kafka_mock_get_requests(rd_kafka_mock_cluster_t *mcluster, size_t *cntp);
void rd_kafka_mock_clear_requests(rd_kafka_mock_cluster_t *mcluster);
rd_kafka_resp_err_t rd_kafka_mock_telemetry_set_requested_metrics(rd_kafka_mock_cluster_t *mcluster, char **metrics, size_t metrics_cnt);
rd_kafka_resp_err_t rd_kafka_mock_telemetry_set_push_interval(rd_kafka_mock_cluster_t *mcluster, int64_t push_interval_ms);
'