Qpid Proton C++ API  0.35.0
message.hpp
Go to the documentation of this file.
1 #ifndef PROTON_MESSAGE_HPP
2 #define PROTON_MESSAGE_HPP
3 
4 /*
5  *
6  * Licensed to the Apache Software Foundation (ASF) under one
7  * or more contributor license agreements. See the NOTICE file
8  * distributed with this work for additional information
9  * regarding copyright ownership. The ASF licenses this file
10  * to you under the Apache License, Version 2.0 (the
11  * "License"); you may not use this file except in compliance
12  * with the License. You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing,
17  * software distributed under the License is distributed on an
18  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19  * KIND, either express or implied. See the License for the
20  * specific language governing permissions and limitations
21  * under the License.
22  *
23  */
24 
25 #include "./fwd.hpp"
26 #include "./internal/export.hpp"
27 #include "./duration.hpp"
28 #include "./timestamp.hpp"
29 #include "./value.hpp"
30 #include "./map.hpp"
31 
32 #include "./internal/pn_unique_ptr.hpp"
33 
34 #include <proton/type_compat.h>
35 
36 #include <string>
37 #include <vector>
38 
41 
42 struct pn_message_t;
43 
44 namespace proton {
45 
50 class message {
51  public:
54 
57 
59  PN_CPP_EXTERN message();
60 
62  PN_CPP_EXTERN message(const message&);
63 
65  PN_CPP_EXTERN message& operator=(const message&);
66 
68  PN_CPP_EXTERN message(message&&);
69 
71  PN_CPP_EXTERN message& operator=(message&&);
72 
75  PN_CPP_EXTERN message(const value& x);
76 
77  PN_CPP_EXTERN ~message();
78 
81 
83  PN_CPP_EXTERN void clear();
84 
89  PN_CPP_EXTERN void id(const message_id&);
90 
92  PN_CPP_EXTERN message_id id() const;
93 
95  PN_CPP_EXTERN void user(const std::string&);
96 
98  PN_CPP_EXTERN std::string user() const;
99 
102  PN_CPP_EXTERN void encode(std::vector<char>&) const;
103 
105  PN_CPP_EXTERN std::vector<char> encode() const;
106 
108  PN_CPP_EXTERN void decode(const std::vector<char>&);
109 
111 
114 
116  PN_CPP_EXTERN void to(const std::string&);
117 
119  PN_CPP_EXTERN std::string to() const;
120 
123  PN_CPP_EXTERN void address(const std::string&);
124  PN_CPP_EXTERN std::string address() const;
126 
128  PN_CPP_EXTERN void reply_to(const std::string&);
129 
131  PN_CPP_EXTERN std::string reply_to() const;
132 
134  PN_CPP_EXTERN void correlation_id(const message_id&);
135 
137  PN_CPP_EXTERN message_id correlation_id() const;
138 
140 
143 
145  PN_CPP_EXTERN void body(const value& x);
146 
148  PN_CPP_EXTERN const value& body() const;
149 
151  PN_CPP_EXTERN value& body();
152 
154  PN_CPP_EXTERN void subject(const std::string&);
155 
157  PN_CPP_EXTERN std::string subject() const;
158 
160  PN_CPP_EXTERN void content_type(const std::string&);
161 
163  PN_CPP_EXTERN std::string content_type() const;
164 
166  PN_CPP_EXTERN void content_encoding(const std::string&);
167 
169  PN_CPP_EXTERN std::string content_encoding() const;
170 
172  PN_CPP_EXTERN void expiry_time(timestamp);
173 
175  PN_CPP_EXTERN timestamp expiry_time() const;
176 
178  PN_CPP_EXTERN void creation_time(timestamp);
179 
181  PN_CPP_EXTERN timestamp creation_time() const;
182 
192  PN_CPP_EXTERN bool inferred() const;
193 
195  PN_CPP_EXTERN void inferred(bool);
196 
198 
201 
206  PN_CPP_EXTERN bool durable() const;
207 
209  PN_CPP_EXTERN void durable(bool);
210 
218  PN_CPP_EXTERN duration ttl() const;
219 
221  PN_CPP_EXTERN void ttl(duration);
222 
230  PN_CPP_EXTERN uint8_t priority() const;
231 
233  PN_CPP_EXTERN void priority(uint8_t);
234 
243 
244  // XXX The triple-not in the last sentence above is confusing.
245 
246  PN_CPP_EXTERN bool first_acquirer() const;
247 
249  PN_CPP_EXTERN void first_acquirer(bool);
250 
255  PN_CPP_EXTERN uint32_t delivery_count() const;
256 
258  PN_CPP_EXTERN void delivery_count(uint32_t);
259 
261 
264 
266  PN_CPP_EXTERN void group_id(const std::string&);
267 
269  PN_CPP_EXTERN std::string group_id() const;
270 
272  PN_CPP_EXTERN void reply_to_group_id(const std::string&);
273 
275  PN_CPP_EXTERN std::string reply_to_group_id() const;
276 
282  PN_CPP_EXTERN int32_t group_sequence() const;
283 
285  PN_CPP_EXTERN void group_sequence(int32_t);
286 
288 
291 
294  PN_CPP_EXTERN property_map& properties();
295 
297  PN_CPP_EXTERN const property_map& properties() const;
298 
302 
304  PN_CPP_EXTERN const annotation_map& message_annotations() const;
305 
309 
311  PN_CPP_EXTERN const annotation_map& delivery_annotations() const;
312 
314 
316  PN_CPP_EXTERN static const uint8_t default_priority;
317 
319  friend PN_CPP_EXTERN std::ostream& operator<<(std::ostream&, const message&);
320 
322  private:
323  struct impl;
324  pn_message_t* pn_msg() const;
325  struct impl& impl() const;
326 
327  mutable pn_message_t* pn_msg_;
328 
329  PN_CPP_EXTERN friend void swap(message&, message&);
331 };
332 
334 PN_CPP_EXTERN std::string to_string(const message&);
335 
336 } // proton
337 
338 #endif // PROTON_MESSAGE_HPP
proton::message::creation_time
void creation_time(timestamp)
Set the creation time.
proton::message::first_acquirer
bool first_acquirer() const
Get the first acquirer flag.
proton::message::properties
property_map & properties()
Get the application properties map.
proton::message::first_acquirer
void first_acquirer(bool)
Set the first acquirer flag.
proton::message::reply_to_group_id
std::string reply_to_group_id() const
Get the reply-to group ID.
proton::message::to
std::string to() const
Get the destination address.
proton::message::inferred
void inferred(bool)
Set the inferred flag.
proton::value
A holder for any AMQP value, simple or complex.
Definition: value.hpp:57
proton::message::encode
void encode(std::vector< char > &) const
Encode entire message into a byte vector, growing it if necessary.
fwd.hpp
Forward declarations.
proton::message::property_map
map< std::string, scalar > property_map
A map of string keys and AMQP scalar values.
Definition: message.hpp:53
map.hpp
A collection of key-value pairs.
proton::message_id
An AMQP message ID.
Definition: message_id.hpp:47
proton::message::group_sequence
void group_sequence(int32_t)
Set the group sequence for a message.
proton::message::reply_to_group_id
void reply_to_group_id(const std::string &)
Set the reply-to group ID.
proton::message::clear
void clear()
Clear the message content and properties.
proton::message::body
value & body()
Get a reference to the body that can be modified in place.
proton::message::content_type
void content_type(const std::string &)
Set the content type of the body.
proton::message::delivery_count
uint32_t delivery_count() const
Get the delivery count.
proton::message::user
std::string user() const
Get the user name or ID.
proton::message::message
message()
Create an empty message.
proton::message::ttl
duration ttl() const
Get the TTL.
proton::swap
void swap(map< K, T > &, map< K, T > &)
Swap proton::map instances.
proton::message::content_encoding
std::string content_encoding() const
Get the content encoding of the body.
proton::map
A collection of key-value pairs.
Definition: map.hpp:67
proton::message::priority
uint8_t priority() const
Get the priority.
proton::duration
A span of time in milliseconds.
Definition: duration.hpp:39
proton::message::delivery_annotations
const annotation_map & delivery_annotations() const
Examine the delivery annotations map.
proton::to_string
std::string to_string(const message &)
Human readable string representation.
proton::message::properties
const property_map & properties() const
Examine the application properties map.
proton::message::expiry_time
timestamp expiry_time() const
Get the expiration time.
proton::message::message_annotations
const annotation_map & message_annotations() const
Examine the message annotations map.
proton::message::content_encoding
void content_encoding(const std::string &)
Set the content encoding of the body.
proton::message::message
message(const value &x)
Create a message with its body set from any value that can be converted to a proton::value.
proton::message::group_id
void group_id(const std::string &)
Set the message group ID.
proton::message::durable
bool durable() const
Get the durable flag.
proton::message::group_sequence
int32_t group_sequence() const
Get the group sequence.
proton::message::message
message(message &&)
Move a message.
proton::message::user
void user(const std::string &)
Set the user name or ID.
proton::message::priority
void priority(uint8_t)
Set the priority.
proton::message::decode
void decode(const std::vector< char > &)
Decode from string data into the message.
proton::message::default_priority
static const uint8_t default_priority
Default priority assigned to new messages.
Definition: message.hpp:316
proton::message::operator<<
friend std::ostream & operator<<(std::ostream &, const message &)
Human readable string representation.
proton::message::reply_to
std::string reply_to() const
Get the address for replies.
proton::message::encode
std::vector< char > encode() const
Return encoded message as a byte vector.
proton::message::correlation_id
void correlation_id(const message_id &)
Set the ID for matching related messages.
proton::message::operator=
message & operator=(const message &)
Copy a message.
proton::message::body
const value & body() const
Get the body.
proton::message::id
message_id id() const
Get the message ID.
proton::message::message_annotations
annotation_map & message_annotations()
Get the message annotations map.
proton::message::subject
void subject(const std::string &)
Set the subject.
value.hpp
A holder for any AMQP value, simple or complex.
proton::message::ttl
void ttl(duration)
Set the TTL.
proton::message::message
message(const message &)
Copy a message.
proton::message::expiry_time
void expiry_time(timestamp)
Set the expiration time.
proton::message::creation_time
timestamp creation_time() const
Get the creation time.
proton::message::id
void id(const message_id &)
Set the message ID.
proton::message::body
void body(const value &x)
Set the body. Equivalent to body() = x.
proton::message::group_id
std::string group_id() const
Get the message group ID.
proton::message::reply_to
void reply_to(const std::string &)
Set the address for replies.
proton::message::delivery_annotations
annotation_map & delivery_annotations()
Get the delivery annotations map.
proton::message::operator=
message & operator=(message &&)
Move a message.
proton
The main Proton namespace.
Definition: annotation_key.hpp:33
timestamp.hpp
A 64-bit timestamp in milliseconds since the Unix epoch.
proton::message::correlation_id
message_id correlation_id() const
Get the ID for matching related messages.
proton::message::to
void to(const std::string &)
Set the destination address.
proton::message::durable
void durable(bool)
Set the durable flag.
proton::message::content_type
std::string content_type() const
Get the content type of the body.
proton::timestamp
A 64-bit timestamp in milliseconds since the Unix epoch.
Definition: timestamp.hpp:35
proton::message::subject
std::string subject() const
Get the subject.
proton::message
An AMQP message.
Definition: message.hpp:50
duration.hpp
A span of time in milliseconds.
proton::message::annotation_map
map< annotation_key, value > annotation_map
A map of AMQP annotation keys and AMQP values.
Definition: message.hpp:56
proton::message::delivery_count
void delivery_count(uint32_t)
Get the delivery count.
proton::message::inferred
bool inferred() const
Get the inferred flag.