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 <ba...@apache.org>
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);
 }

Reply via email to