pulsar-client-cpp
Message.h
1 
19 #ifndef MESSAGE_HPP_
20 #define MESSAGE_HPP_
21 
22 #include <map>
23 #include <string>
24 
25 #include <memory>
26 
27 #include "MessageId.h"
28 
29 #pragma GCC visibility push(default)
30 
31 namespace pulsar {
32 namespace proto {
33 class CommandMessage;
34 class MessageMetadata;
35 class SingleMessageMetadata;
36 } // namespace proto
37 
38 class SharedBuffer;
39 class MessageBuilder;
40 class MessageImpl;
41 class PulsarWrapper;
42 
43 class 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 
94  std::string getDataAsString() const;
95 
105  const MessageId& getMessageId() const;
106 
111  const std::string& getPartitionKey() const;
112  bool hasPartitionKey() const;
113 
118  uint64_t getPublishTimestamp() const;
119 
123  uint64_t getEventTimestamp() const;
124 
128  const std::string& getTopicName() const;
129 
130  private:
131  typedef std::shared_ptr<MessageImpl> MessageImplPtr;
132  MessageImplPtr impl_;
133 
134  Message(MessageImplPtr& impl);
135  Message(const proto::CommandMessage& msg, proto::MessageMetadata& data, SharedBuffer& payload,
136  int32_t partition);
138  Message(const MessageId& messageID, proto::MessageMetadata& metadata, SharedBuffer& payload,
139  proto::SingleMessageMetadata& singleMetadata, const std::string& topicName);
140  friend class PartitionedProducerImpl;
141  friend class PartitionedConsumerImpl;
142  friend class MultiTopicsConsumerImpl;
143  friend class MessageBuilder;
144  friend class ConsumerImpl;
145  friend class ProducerImpl;
146  friend class Commands;
147  friend class BatchMessageContainer;
148  friend class BatchAcknowledgementTracker;
149  friend class PulsarWrapper;
150 
151  friend std::ostream& operator<<(std::ostream& s, const StringMap& map);
152  friend std::ostream& operator<<(std::ostream& s, const Message& msg);
153 };
154 } // namespace pulsar
155 
156 #pragma GCC visibility pop
157 #endif /* MESSAGE_HPP_ */
pulsar::MessageId
Definition: MessageId.h:33
pulsar::Message::getTopicName
const std::string & getTopicName() const
pulsar::Message::getProperties
const StringMap & getProperties() const
pulsar::Message::getMessageId
const MessageId & getMessageId() const
pulsar::Message::hasProperty
bool hasProperty(const std::string &name) const
pulsar::Message::getLength
std::size_t getLength() const
pulsar::Message::getPublishTimestamp
uint64_t getPublishTimestamp() const
pulsar::Message::getPartitionKey
const std::string & getPartitionKey() const
pulsar::Message::getEventTimestamp
uint64_t getEventTimestamp() const
pulsar::Message
Definition: Message.h:43
pulsar::Message::getDataAsString
std::string getDataAsString() const
pulsar::Message::getData
const void * getData() const
pulsar::MessageBuilder
Definition: MessageBuilder.h:30
pulsar::Message::getProperty
const std::string & getProperty(const std::string &name) const
pulsar
Definition: Authentication.h:31