Added publish method with r-value std::string

This commit is contained in:
Martijn Otto 2015-04-22 14:24:00 +02:00
parent df6b8ae743
commit 803ba6cc88
2 changed files with 14 additions and 7 deletions

View File

@ -338,6 +338,7 @@ public:
*/
bool publish(const std::string &exchange, const std::string &routingKey, const Envelope &envelope) { return _implementation->publish(exchange, routingKey, envelope); }
bool publish(const std::string &exchange, const std::string &routingKey, const std::string &message) { return _implementation->publish(exchange, routingKey, Envelope(message)); }
bool publish(const std::string &exchange, const std::string &routingKey, std::string &&message) { return _implementation->publish(exchange, routingKey, Envelope(std::move(message))); }
bool publish(const std::string &exchange, const std::string &routingKey, const char *message, size_t size) { return _implementation->publish(exchange, routingKey, Envelope(message, size)); }
bool publish(const std::string &exchange, const std::string &routingKey, const char *message) { return _implementation->publish(exchange, routingKey, Envelope(message, strlen(message))); }

View File

@ -31,7 +31,7 @@ protected:
* @var const char *
*/
const char *_body;
/**
* Size of the data
* @var uint64_t
@ -41,26 +41,32 @@ protected:
public:
/**
* Constructor
*
*
* The data buffer that you pass to this constructor must be valid during
* the lifetime of the Envelope object.
*
*
* @param body
* @param size
*/
Envelope(const char *body, uint64_t size) : MetaData(), _body(body), _bodySize(size) {}
/**
* Constructor based on a string
* @param body
*/
Envelope(const std::string &body) : MetaData(), _str(body), _body(_str.data()), _bodySize(_str.size()) {}
/**
* Constructor based on a string
* @param body
*/
Envelope(std::string &&body) : MetaData(), _str(std::move(body)), _body(_str.data()), _bodySize(_str.size()) {}
/**
* Destructor
*/
virtual ~Envelope() {}
/**
* Access to the full message data
* @return buffer
@ -69,7 +75,7 @@ public:
{
return _body;
}
/**
* Size of the body
* @return uint64_t
@ -78,7 +84,7 @@ public:
{
return _bodySize;
}
/**
* Body as a string
* @return string