pulsar-client-cpp
Loading...
Searching...
No Matches
producer_configuration.h
1
20#pragma once
21
22#include <pulsar/c/message_router.h>
23#include <pulsar/defines.h>
24#include <stdint.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30typedef enum
31{
32 pulsar_UseSinglePartition,
33 pulsar_RoundRobinDistribution,
34 pulsar_CustomPartition
35} pulsar_partitions_routing_mode;
36
37typedef enum
38{
39 pulsar_Murmur3_32Hash,
40 pulsar_BoostHash,
41 pulsar_JavaStringHash
42} pulsar_hashing_scheme;
43
44typedef enum
45{
46 pulsar_CompressionNone = 0,
47 pulsar_CompressionLZ4 = 1,
48 pulsar_CompressionZLib = 2,
49 pulsar_CompressionZSTD = 3,
50 pulsar_CompressionSNAPPY = 4
51} pulsar_compression_type;
52
53typedef enum
54{
55 pulsar_None = 0,
56 pulsar_String = 1,
57 pulsar_Json = 2,
58 pulsar_Protobuf = 3,
59 pulsar_Avro = 4,
60 pulsar_Boolean = 5,
61 pulsar_Int8 = 6,
62 pulsar_Int16 = 7,
63 pulsar_Int32 = 8,
64 pulsar_Int64 = 9,
65 pulsar_Float32 = 10,
66 pulsar_Float64 = 11,
67 pulsar_KeyValue = 15,
68 pulsar_Bytes = -1,
69 pulsar_AutoConsume = -3,
70 pulsar_AutoPublish = -4,
71} pulsar_schema_type;
72
73typedef enum
74{
75 // This is the default option to fail send if crypto operation fails
76 pulsar_ProducerFail,
77 // Ignore crypto failure and proceed with sending unencrypted messages
78 pulsar_ProducerSend
79} pulsar_producer_crypto_failure_action;
80
81typedef struct _pulsar_producer_configuration pulsar_producer_configuration_t;
82
83typedef struct _pulsar_crypto_key_reader pulsar_crypto_key_reader;
84
85PULSAR_PUBLIC pulsar_producer_configuration_t *pulsar_producer_configuration_create();
86
87PULSAR_PUBLIC void pulsar_producer_configuration_free(pulsar_producer_configuration_t *conf);
88
89PULSAR_PUBLIC void pulsar_producer_configuration_set_producer_name(pulsar_producer_configuration_t *conf,
90 const char *producerName);
91
92PULSAR_PUBLIC const char *pulsar_producer_configuration_get_producer_name(
93 pulsar_producer_configuration_t *conf);
94
95PULSAR_PUBLIC void pulsar_producer_configuration_set_send_timeout(pulsar_producer_configuration_t *conf,
96 int sendTimeoutMs);
97
98PULSAR_PUBLIC int pulsar_producer_configuration_get_send_timeout(pulsar_producer_configuration_t *conf);
99
100PULSAR_PUBLIC void pulsar_producer_configuration_set_initial_sequence_id(
101 pulsar_producer_configuration_t *conf, int64_t initialSequenceId);
102
103PULSAR_PUBLIC int64_t
104pulsar_producer_configuration_get_initial_sequence_id(pulsar_producer_configuration_t *conf);
105
106PULSAR_PUBLIC void pulsar_producer_configuration_set_compression_type(
107 pulsar_producer_configuration_t *conf, pulsar_compression_type compressionType);
108
109PULSAR_PUBLIC pulsar_compression_type
110pulsar_producer_configuration_get_compression_type(pulsar_producer_configuration_t *conf);
111
112PULSAR_PUBLIC void pulsar_producer_configuration_set_schema_info(pulsar_producer_configuration_t *conf,
113 pulsar_schema_type schemaType,
114 const char *name, const char *schema,
115 pulsar_string_map_t *properties);
116
117PULSAR_PUBLIC void pulsar_producer_configuration_set_max_pending_messages(
118 pulsar_producer_configuration_t *conf, int maxPendingMessages);
119PULSAR_PUBLIC int pulsar_producer_configuration_get_max_pending_messages(
120 pulsar_producer_configuration_t *conf);
121
130PULSAR_PUBLIC void pulsar_producer_configuration_set_max_pending_messages_across_partitions(
131 pulsar_producer_configuration_t *conf, int maxPendingMessagesAcrossPartitions);
132
137PULSAR_PUBLIC int pulsar_producer_configuration_get_max_pending_messages_across_partitions(
138 pulsar_producer_configuration_t *conf);
139
140PULSAR_PUBLIC void pulsar_producer_configuration_set_partitions_routing_mode(
141 pulsar_producer_configuration_t *conf, pulsar_partitions_routing_mode mode);
142
143PULSAR_PUBLIC pulsar_partitions_routing_mode
144pulsar_producer_configuration_get_partitions_routing_mode(pulsar_producer_configuration_t *conf);
145
146PULSAR_PUBLIC void pulsar_producer_configuration_set_message_router(pulsar_producer_configuration_t *conf,
147 pulsar_message_router router, void *ctx);
148
149PULSAR_PUBLIC void pulsar_producer_configuration_set_hashing_scheme(pulsar_producer_configuration_t *conf,
150 pulsar_hashing_scheme scheme);
151
152PULSAR_PUBLIC pulsar_hashing_scheme
153pulsar_producer_configuration_get_hashing_scheme(pulsar_producer_configuration_t *conf);
154
155PULSAR_PUBLIC void pulsar_producer_configuration_set_lazy_start_partitioned_producers(
156 pulsar_producer_configuration_t *conf, int useLazyStartPartitionedProducers);
157
158PULSAR_PUBLIC int pulsar_producer_configuration_get_lazy_start_partitioned_producers(
159 pulsar_producer_configuration_t *conf);
160
161PULSAR_PUBLIC void pulsar_producer_configuration_set_block_if_queue_full(
162 pulsar_producer_configuration_t *conf, int blockIfQueueFull);
163
164PULSAR_PUBLIC int pulsar_producer_configuration_get_block_if_queue_full(
165 pulsar_producer_configuration_t *conf);
166
167// Zero queue size feature will not be supported on consumer end if batching is enabled
168PULSAR_PUBLIC void pulsar_producer_configuration_set_batching_enabled(pulsar_producer_configuration_t *conf,
169 int batchingEnabled);
170
171PULSAR_PUBLIC int pulsar_producer_configuration_get_batching_enabled(pulsar_producer_configuration_t *conf);
172
173PULSAR_PUBLIC void pulsar_producer_configuration_set_batching_max_messages(
174 pulsar_producer_configuration_t *conf, unsigned int batchingMaxMessages);
175
176PULSAR_PUBLIC unsigned int pulsar_producer_configuration_get_batching_max_messages(
177 pulsar_producer_configuration_t *conf);
178
179PULSAR_PUBLIC void pulsar_producer_configuration_set_batching_max_allowed_size_in_bytes(
180 pulsar_producer_configuration_t *conf, unsigned long batchingMaxAllowedSizeInBytes);
181
182PULSAR_PUBLIC unsigned long pulsar_producer_configuration_get_batching_max_allowed_size_in_bytes(
183 pulsar_producer_configuration_t *conf);
184
185PULSAR_PUBLIC void pulsar_producer_configuration_set_batching_max_publish_delay_ms(
186 pulsar_producer_configuration_t *conf, unsigned long batchingMaxPublishDelayMs);
187
188PULSAR_PUBLIC unsigned long pulsar_producer_configuration_get_batching_max_publish_delay_ms(
189 pulsar_producer_configuration_t *conf);
190
191PULSAR_PUBLIC void pulsar_producer_configuration_set_property(pulsar_producer_configuration_t *conf,
192 const char *name, const char *value);
193
194PULSAR_PUBLIC int pulsar_producer_is_encryption_enabled(pulsar_producer_configuration_t *conf);
195
196PULSAR_PUBLIC void pulsar_producer_configuration_set_default_crypto_key_reader(
197 pulsar_producer_configuration_t *conf, const char *public_key_path, const char *private_key_path);
198
199PULSAR_PUBLIC pulsar_producer_crypto_failure_action
200pulsar_producer_configuration_get_crypto_failure_action(pulsar_producer_configuration_t *conf);
201
202PULSAR_PUBLIC void pulsar_producer_configuration_set_crypto_failure_action(
203 pulsar_producer_configuration_t *conf, pulsar_producer_crypto_failure_action cryptoFailureAction);
204
205PULSAR_PUBLIC void pulsar_producer_configuration_set_encryption_key(pulsar_producer_configuration_t *conf,
206 const char *key);
207
208PULSAR_PUBLIC void pulsar_producer_configuration_set_chunking_enabled(pulsar_producer_configuration_t *conf,
209 int chunkingEnabled);
210
211PULSAR_PUBLIC int pulsar_producer_configuration_is_chunking_enabled(pulsar_producer_configuration_t *conf);
212
213// const CryptoKeyReaderPtr getCryptoKeyReader() const;
214// ProducerConfiguration &setCryptoKeyReader(CryptoKeyReaderPtr cryptoKeyReader);
215//
216// ProducerCryptoFailureAction getCryptoFailureAction() const;
217// ProducerConfiguration &setCryptoFailureAction(ProducerCryptoFailureAction action);
218//
219// std::set <std::string> &getEncryptionKeys();
220// int isEncryptionEnabled() const;
221// ProducerConfiguration &addEncryptionKey(std::string key);
222
223#ifdef __cplusplus
224}
225#endif