diff --git a/CMakeLists.txt b/CMakeLists.txt index 4670b58..a57c02d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,11 +23,12 @@ endmacro() add_subdirectory(src) add_subdirectory(include) -add_subdirectory(amqp_boost_test) -include_directories(${CMAKE_SOURCE_DIR}/include) add_library(amqp-cpp STATIC ${SRCS}) target_include_directories(amqp-cpp SYSTEM PUBLIC ${PROJECT_SOURCE_DIR}) +install(TARGETS amqp-cpp + ARCHIVE DESTINATION lib +) set(AMQP-CPP_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) set(AMQP-CPP_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE) diff --git a/README.md b/README.md index cbc6bf1..f8429cd 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,16 @@ This library is created and maintained by Copernica (www.copernica.com), and is used inside the MailerQ (www.mailerq.com) application, MailerQ is a tool for sending large volumes of email, using AMQP message queues. +Do you appreciate our work and are you looking for high quality email solutions? +Then check out our commercial solutions: -HOW TO USE -========== +* Copernica Marketing Suite (www.copernica.com) +* MailerQ MTA (www.mailerq.com) +* Responsive Email web service (www.responsiveemail.com) + + +HOW TO USE AMQP-CPP +=================== As we mentioned above, the library does not do any IO by itself, and you need to pass an object to the library that the library can use for that. So, before diff --git a/include/channel.h b/include/channel.h index 8024e0a..e5e85c3 100644 --- a/include/channel.h +++ b/include/channel.h @@ -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))); } diff --git a/include/envelope.h b/include/envelope.h index fbe646e..b1cdf6a 100644 --- a/include/envelope.h +++ b/include/envelope.h @@ -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