This is an automated email from the ASF dual-hosted git repository.
baodi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pulsar-client-cpp.git
The following commit(s) were added to refs/heads/main by this push:
new 4d659a8 [feat] Support set consumer regex subscription mode for C
client. (#247)
4d659a8 is described below
commit 4d659a81aff34794a3f0a977057b72a37204b347
Author: Baodi Shi <[email protected]>
AuthorDate: Fri Apr 14 21:40:12 2023 +0800
[feat] Support set consumer regex subscription mode for C client. (#247)
---
include/pulsar/c/consumer_configuration.h | 18 ++++++++++++++++++
lib/c/c_ConsumerConfiguration.cc | 13 +++++++++++++
tests/c/c_ConsumerConfigurationTest.cc | 5 +++++
3 files changed, 36 insertions(+)
diff --git a/include/pulsar/c/consumer_configuration.h
b/include/pulsar/c/consumer_configuration.h
index d6c4fcd..16124a8 100644
--- a/include/pulsar/c/consumer_configuration.h
+++ b/include/pulsar/c/consumer_configuration.h
@@ -79,6 +79,16 @@ typedef enum
pulsar_ConsumerConsume
} pulsar_consumer_crypto_failure_action;
+typedef enum
+{
+ // Only subscribe to persistent topics.
+ pulsar_consumer_regex_sub_mode_PersistentOnly = 0,
+ // Only subscribe to non-persistent topics.
+ pulsar_consumer_regex_sub_mode_NonPersistentOnly = 1,
+ // Subscribe to both persistent and non-persistent topics.
+ pulsar_consumer_regex_sub_mode_AllTopics = 2
+} pulsar_consumer_regex_subscription_mode;
+
/// Callback definition for MessageListener
typedef void (*pulsar_message_listener)(pulsar_consumer_t *consumer,
pulsar_message_t *msg, void *ctx);
@@ -310,6 +320,14 @@ PULSAR_PUBLIC void
pulsar_consumer_configuration_set_batch_index_ack_enabled(
PULSAR_PUBLIC int pulsar_consumer_configuration_is_batch_index_ack_enabled(
pulsar_consumer_configuration_t *consumer_configuration);
+PULSAR_PUBLIC void pulsar_consumer_configuration_set_regex_subscription_mode(
+ pulsar_consumer_configuration_t *consumer_configuration,
+ pulsar_consumer_regex_subscription_mode regex_sub_mode);
+
+PULSAR_PUBLIC pulsar_consumer_regex_subscription_mode
+pulsar_consumer_configuration_get_regex_subscription_mode(
+ pulsar_consumer_configuration_t *consumer_configuration);
+
// const CryptoKeyReaderPtr getCryptoKeyReader()
//
// const;
diff --git a/lib/c/c_ConsumerConfiguration.cc b/lib/c/c_ConsumerConfiguration.cc
index 8a03d3d..9cc3f20 100644
--- a/lib/c/c_ConsumerConfiguration.cc
+++ b/lib/c/c_ConsumerConfiguration.cc
@@ -237,3 +237,16 @@ int
pulsar_consumer_configuration_is_batch_index_ack_enabled(
pulsar_consumer_configuration_t *consumer_configuration) {
return
consumer_configuration->consumerConfiguration.isBatchIndexAckEnabled();
}
+
+void pulsar_consumer_configuration_set_regex_subscription_mode(
+ pulsar_consumer_configuration_t *consumer_configuration,
+ pulsar_consumer_regex_subscription_mode regex_sub_mode) {
+ consumer_configuration->consumerConfiguration.setRegexSubscriptionMode(
+ (pulsar::RegexSubscriptionMode)regex_sub_mode);
+}
+
+pulsar_consumer_regex_subscription_mode
pulsar_consumer_configuration_get_regex_subscription_mode(
+ pulsar_consumer_configuration_t *consumer_configuration) {
+ return (pulsar_consumer_regex_subscription_mode)
+
consumer_configuration->consumerConfiguration.getRegexSubscriptionMode();
+}
diff --git a/tests/c/c_ConsumerConfigurationTest.cc
b/tests/c/c_ConsumerConfigurationTest.cc
index 03204cc..3984e6d 100644
--- a/tests/c/c_ConsumerConfigurationTest.cc
+++ b/tests/c/c_ConsumerConfigurationTest.cc
@@ -37,4 +37,9 @@ TEST(C_ConsumerConfigurationTest, testCApiConfig) {
pulsar_consumer_configuration_set_batch_index_ack_enabled(consumer_conf,
1);
ASSERT_EQ(pulsar_consumer_configuration_is_batch_index_ack_enabled(consumer_conf),
1);
+
+ pulsar_consumer_configuration_set_regex_subscription_mode(
+ consumer_conf, pulsar_consumer_regex_sub_mode_NonPersistentOnly);
+
ASSERT_EQ(pulsar_consumer_configuration_get_regex_subscription_mode(consumer_conf),
+ pulsar_consumer_regex_sub_mode_NonPersistentOnly);
}