2222#include < pulsar/MessageId.h>
2323#include < pulsar/Result.h>
2424
25- #include < cstdint>
2625#include < functional>
27- #include < set>
28-
29- #include " ProtoApiEnums.h"
3026
3127namespace pulsar {
3228
3329class ClientConnection ;
3430using ClientConnectionPtr = std::shared_ptr<ClientConnection>;
3531using ClientConnectionWeakPtr = std::weak_ptr<ClientConnection>;
3632using ResultCallback = std::function<void (Result)>;
33+ class ConsumerImpl ;
34+ using ConsumerImplPtr = std::shared_ptr<ConsumerImpl>;
35+ using ConsumerImplWeakPtr = std::weak_ptr<ConsumerImpl>;
3736
3837/* *
3938 * @class AckGroupingTracker
@@ -42,19 +41,12 @@ using ResultCallback = std::function<void(Result)>;
4241 */
4342class AckGroupingTracker : public std ::enable_shared_from_this<AckGroupingTracker> {
4443 public:
45- AckGroupingTracker (std::function<ClientConnectionPtr()> connectionSupplier,
46- std::function<uint64_t ()> requestIdSupplier, uint64_t consumerId, bool waitResponse)
47- : connectionSupplier_(std::move(connectionSupplier)),
48- requestIdSupplier_ (std::move(requestIdSupplier)),
49- consumerId_(consumerId),
50- waitResponse_(waitResponse) {}
51-
5244 virtual ~AckGroupingTracker () = default ;
5345
5446 /* *
5547 * Start tracking the ACK requests.
5648 */
57- virtual void start () {}
49+ virtual void start (const ConsumerImplPtr& consumer ) { consumer_ = consumer; }
5850
5951 /* *
6052 * Since ACK requests are grouped and delayed, we need to do some best-effort duplicate check to
@@ -72,7 +64,9 @@ class AckGroupingTracker : public std::enable_shared_from_this<AckGroupingTracke
7264 * @param[in] callback the callback that is triggered when the message is acknowledged
7365 */
7466 virtual void addAcknowledge (const MessageId& msgId, const ResultCallback& callback) {
75- callback (ResultOk);
67+ if (callback) {
68+ callback (ResultOk);
69+ }
7670 }
7771
7872 /* *
@@ -81,7 +75,9 @@ class AckGroupingTracker : public std::enable_shared_from_this<AckGroupingTracke
8175 * @param[in] callback the callback that is triggered when the messages are acknowledged
8276 */
8377 virtual void addAcknowledgeList (const MessageIdList& msgIds, const ResultCallback& callback) {
84- callback (ResultOk);
78+ if (callback) {
79+ callback (ResultOk);
80+ }
8581 }
8682
8783 /* *
@@ -90,7 +86,9 @@ class AckGroupingTracker : public std::enable_shared_from_this<AckGroupingTracke
9086 * @param[in] callback the callback that is triggered when the message is acknowledged
9187 */
9288 virtual void addAcknowledgeCumulative (const MessageId& msgId, const ResultCallback& callback) {
93- callback (ResultOk);
89+ if (callback) {
90+ callback (ResultOk);
91+ }
9492 }
9593
9694 /* *
@@ -99,18 +97,10 @@ class AckGroupingTracker : public std::enable_shared_from_this<AckGroupingTracke
9997 */
10098 virtual void flushAndClean () {}
10199
102- protected:
103- void doImmediateAck (const MessageId& msgId, const ResultCallback& callback,
104- CommandAck_AckType ackType) const ;
105- void doImmediateAck (const std::set<MessageId>& msgIds, const ResultCallback& callback) const ;
106-
107- private:
108- const std::function<ClientConnectionPtr()> connectionSupplier_;
109- const std::function<uint64_t ()> requestIdSupplier_;
110- const uint64_t consumerId_;
100+ virtual void close () {}
111101
112102 protected:
113- const bool waitResponse_ ;
103+ ConsumerImplWeakPtr consumer_ ;
114104
115105}; // class AckGroupingTracker
116106
0 commit comments