pulsar-client-cpp
All Classes Namespaces Functions Typedefs Enumerations Enumerator Pages
Message.h
1
19#ifndef MESSAGE_HPP_
20#define MESSAGE_HPP_
21
22#include <pulsar/defines.h>
23
24#include <map>
25#include <memory>
26#include <string>
27
28#include "KeyValue.h"
29#include "MessageId.h"
30
31namespace pulsar {
32namespace proto {
33class CommandMessage;
34class MessageMetadata;
35class SingleMessageMetadata;
36} // namespace proto
37
38class SharedBuffer;
39class MessageBuilder;
40class MessageImpl;
41class PulsarWrapper;
42
43class PULSAR_PUBLIC Message {
44 public:
45 typedef std::map<std::string, std::string> StringMap;
46
47 Message();
48
55 const StringMap& getProperties() const;
56
64 bool hasProperty(const std::string& name) const;
65
72 const std::string& getProperty(const std::string& name) const;
73
80 const void* getData() const;
81
87 std::size_t getLength() const;
88
97#if defined(_MSC_VER) && !defined(NDEBUG)
98 const std::string& getDataAsString() const;
99#else
100 std::string getDataAsString() const;
101#endif
102
109
119 const MessageId& getMessageId() const;
120
125 void setMessageId(const MessageId& messageId) const;
126
131 const std::string& getPartitionKey() const;
132
136 bool hasPartitionKey() const;
137
143 const std::string& getOrderingKey() const;
144
151 bool hasOrderingKey() const;
152
157 uint64_t getPublishTimestamp() const;
158
162 uint64_t getEventTimestamp() const;
163
167 const std::string& getTopicName() const;
168
172 const int getRedeliveryCount() const;
173
177 bool hasSchemaVersion() const;
178
182 const std::string& getSchemaVersion() const;
183
184 bool operator==(const Message& msg) const;
185
186 private:
187 typedef std::shared_ptr<MessageImpl> MessageImplPtr;
188 MessageImplPtr impl_;
189
190 Message(MessageImplPtr& impl);
191 Message(const proto::CommandMessage& msg, proto::MessageMetadata& data, SharedBuffer& payload,
192 int32_t partition);
194 Message(const MessageId& messageId, proto::MessageMetadata& metadata, SharedBuffer& payload,
195 proto::SingleMessageMetadata& singleMetadata, const std::string& topicName);
196 friend class PartitionedProducerImpl;
197 friend class MultiTopicsConsumerImpl;
198 friend class MessageBuilder;
199 friend class ConsumerImpl;
200 friend class ProducerImpl;
201 friend class Commands;
202 friend class BatchMessageContainerBase;
203 friend class BatchAcknowledgementTracker;
204 friend class PulsarWrapper;
205 friend class MessageBatch;
206 friend struct OpSendMsg;
207
208 friend PULSAR_PUBLIC std::ostream& operator<<(std::ostream& s, const StringMap& map);
209 friend PULSAR_PUBLIC std::ostream& operator<<(std::ostream& s, const Message& msg);
210 friend class PulsarFriend;
211};
212} // namespace pulsar
213
214#endif /* MESSAGE_HPP_ */
Definition: KeyValue.h:35
Definition: MessageBatch.h:29
Definition: MessageBuilder.h:33
Definition: Message.h:43
const std::string & getPartitionKey() const
bool hasPartitionKey() const
KeyValue getKeyValueData() const
void setMessageId(const MessageId &messageId) const
std::string getDataAsString() const
bool hasSchemaVersion() const
const std::string & getProperty(const std::string &name) const
uint64_t getEventTimestamp() const
std::size_t getLength() const
const std::string & getOrderingKey() const
const void * getData() const
uint64_t getPublishTimestamp() const
const std::string & getSchemaVersion() const
const int getRedeliveryCount() const
bool hasOrderingKey() const
bool hasProperty(const std::string &name) const
const MessageId & getMessageId() const
const StringMap & getProperties() const
const std::string & getTopicName() const
Definition: MessageId.h:34
Definition: Authentication.h:31