pulsar-client-cpp
Client.h
1 
19 #ifndef PULSAR_CLIENT_HPP_
20 #define PULSAR_CLIENT_HPP_
21 
22 #include <pulsar/Consumer.h>
23 #include <pulsar/Producer.h>
24 #include <pulsar/Reader.h>
25 #include <pulsar/Result.h>
26 #include <pulsar/Message.h>
27 #include <pulsar/MessageBuilder.h>
28 #include <pulsar/ClientConfiguration.h>
29 #include <pulsar/Schema.h>
30 #include <string>
31 
32 #pragma GCC visibility push(default)
33 
34 namespace pulsar {
35 typedef std::function<void(Result, Producer)> CreateProducerCallback;
36 typedef std::function<void(Result, Consumer)> SubscribeCallback;
37 typedef std::function<void(Result, Reader)> ReaderCallback;
38 typedef std::function<void(Result, const std::vector<std::string>&)> GetPartitionsCallback;
39 typedef std::function<void(Result)> CloseCallback;
40 
41 class ClientImpl;
42 class PulsarFriend;
43 class PulsarWrapper;
44 
45 class Client {
46  public:
53  Client(const std::string& serviceUrl);
54 
63  Client(const std::string& serviceUrl, const ClientConfiguration& clientConfiguration);
64 
75  Result createProducer(const std::string& topic, Producer& producer);
76 
88  Result createProducer(const std::string& topic, const ProducerConfiguration& conf, Producer& producer);
89 
90  void createProducerAsync(const std::string& topic, CreateProducerCallback callback);
91 
92  void createProducerAsync(const std::string& topic, ProducerConfiguration conf,
93  CreateProducerCallback callback);
94 
95  Result subscribe(const std::string& topic, const std::string& consumerName, Consumer& consumer);
96  Result subscribe(const std::string& topic, const std::string& consumerName,
97  const ConsumerConfiguration& conf, Consumer& consumer);
98 
99  void subscribeAsync(const std::string& topic, const std::string& consumerName,
100  SubscribeCallback callback);
101  void subscribeAsync(const std::string& topic, const std::string& consumerName,
102  const ConsumerConfiguration& conf, SubscribeCallback callback);
103 
107  Result subscribe(const std::vector<std::string>& topics, const std::string& subscriptionName,
108  Consumer& consumer);
109  Result subscribe(const std::vector<std::string>& topics, const std::string& subscriptionName,
110  const ConsumerConfiguration& conf, Consumer& consumer);
111  void subscribeAsync(const std::vector<std::string>& topics, const std::string& subscriptionName,
112  SubscribeCallback callback);
113  void subscribeAsync(const std::vector<std::string>& topics, const std::string& subscriptionName,
114  const ConsumerConfiguration& conf, SubscribeCallback callback);
115 
119  Result subscribeWithRegex(const std::string& regexPattern, const std::string& consumerName,
120  Consumer& consumer);
121  Result subscribeWithRegex(const std::string& regexPattern, const std::string& consumerName,
122  const ConsumerConfiguration& conf, Consumer& consumer);
123 
124  void subscribeWithRegexAsync(const std::string& regexPattern, const std::string& consumerName,
125  SubscribeCallback callback);
126  void subscribeWithRegexAsync(const std::string& regexPattern, const std::string& consumerName,
127  const ConsumerConfiguration& conf, SubscribeCallback callback);
128 
158  Result createReader(const std::string& topic, const MessageId& startMessageId,
159  const ReaderConfiguration& conf, Reader& reader);
160 
161  void createReaderAsync(const std::string& topic, const MessageId& startMessageId,
162  const ReaderConfiguration& conf, ReaderCallback callback);
163 
177  Result getPartitionsForTopic(const std::string& topic, std::vector<std::string>& partitions);
178 
194  void getPartitionsForTopicAsync(const std::string& topic, GetPartitionsCallback callback);
195 
200  Result close();
201 
202  void closeAsync(CloseCallback callback);
203 
204  void shutdown();
205 
206  private:
207  Client(const std::string& serviceUrl, const ClientConfiguration& clientConfiguration,
208  bool poolConnections);
209  Client(const std::shared_ptr<ClientImpl>);
210 
211  friend class PulsarFriend;
212  friend class PulsarWrapper;
213  std::shared_ptr<ClientImpl> impl_;
214 };
215 } // namespace pulsar
216 
217 #pragma GCC visibility pop
218 
219 #endif /* PULSAR_CLIENT_HPP_ */
pulsar::MessageId
Definition: MessageId.h:33
pulsar::Result
Result
Definition: Result.h:31
pulsar::Client::createProducer
Result createProducer(const std::string &topic, Producer &producer)
pulsar::ClientConfiguration
Definition: ClientConfiguration.h:29
pulsar::ConsumerConfiguration
Definition: ConsumerConfiguration.h:50
pulsar::Client::Client
Client(const std::string &serviceUrl)
pulsar::Client::subscribeWithRegex
Result subscribeWithRegex(const std::string &regexPattern, const std::string &consumerName, Consumer &consumer)
pulsar::Client::getPartitionsForTopic
Result getPartitionsForTopic(const std::string &topic, std::vector< std::string > &partitions)
pulsar::Client::getPartitionsForTopicAsync
void getPartitionsForTopicAsync(const std::string &topic, GetPartitionsCallback callback)
pulsar::Client::close
Result close()
pulsar::Reader
Definition: Reader.h:37
pulsar::Consumer
Definition: Consumer.h:35
pulsar::Client::createReader
Result createReader(const std::string &topic, const MessageId &startMessageId, const ReaderConfiguration &conf, Reader &reader)
pulsar::Client
Definition: Client.h:45
pulsar::ProducerConfiguration
Definition: ProducerConfiguration.h:45
pulsar
Definition: Authentication.h:31
pulsar::ReaderConfiguration
Definition: ReaderConfiguration.h:45
pulsar::Producer
Definition: Producer.h:36