You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2011/08/30 18:21:00 UTC
svn commit: r1163275 - in /qpid/trunk/qpid/cpp: include/qpid/Msg.h
src/Makefile.am src/qpid/Msg.cpp src/qpid/log/Statement.cpp
Author: aconway
Date: Tue Aug 30 16:21:00 2011
New Revision: 1163275
URL: http://svn.apache.org/viewvc?rev=1163275&view=rev
Log:
NO-JIRA: Revert change to Msg.h introduced in r1162273
The change did not compile on windows due to EXTERN declaration issues.
Changes has been backed out as it is not critical and can be addressed elsewhere.
Modified:
qpid/trunk/qpid/cpp/include/qpid/Msg.h
qpid/trunk/qpid/cpp/src/Makefile.am
qpid/trunk/qpid/cpp/src/qpid/Msg.cpp
qpid/trunk/qpid/cpp/src/qpid/log/Statement.cpp
Modified: qpid/trunk/qpid/cpp/include/qpid/Msg.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/Msg.h?rev=1163275&r1=1163274&r2=1163275&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/Msg.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/Msg.h Tue Aug 30 16:21:00 2011
@@ -42,7 +42,7 @@ struct Msg {
std::ostringstream os;
Msg() {}
Msg(const Msg& m) : os(m.str()) {}
- QPID_TYPES_EXTERN std::string str() const;
+ std::string str() const { return os.str(); }
operator std::string() const { return str(); }
Msg& operator<<(long n) { os << n; return *this; }
Modified: qpid/trunk/qpid/cpp/src/Makefile.am
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/Makefile.am?rev=1163275&r1=1163274&r2=1163275&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/Makefile.am (original)
+++ qpid/trunk/qpid/cpp/src/Makefile.am Tue Aug 30 16:21:00 2011
@@ -744,7 +744,6 @@ libqpidclient_la_LDFLAGS = -version-info
libqpidtypes_la_LIBADD= -luuid
libqpidtypes_la_SOURCES= \
- qpid/Msg.cpp \
qpid/types/Exception.cpp \
qpid/types/Uuid.cpp \
qpid/types/Variant.cpp \
Modified: qpid/trunk/qpid/cpp/src/qpid/log/Statement.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/log/Statement.cpp?rev=1163275&r1=1163274&r2=1163275&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/log/Statement.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/log/Statement.cpp Tue Aug 30 16:21:00 2011
@@ -24,9 +24,32 @@
#include <ctype.h>
namespace qpid {
-std::string quote(const std::string& str); // Defined in Msg.cpp
namespace log {
+namespace {
+struct NonPrint { bool operator()(unsigned char c) { return !isprint(c) && !isspace(c); } };
+
+const char hex[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+
+std::string quote(const std::string& str) {
+ NonPrint nonPrint;
+ size_t n = std::count_if(str.begin(), str.end(), nonPrint);
+ if (n==0) return str;
+ std::string ret;
+ ret.reserve(str.size()+2*n); // Avoid extra allocations.
+ for (std::string::const_iterator i = str.begin(); i != str.end(); ++i) {
+ if (nonPrint(*i)) {
+ ret.push_back('\\');
+ ret.push_back('x');
+ ret.push_back(hex[((*i) >> 4)&0xf]);
+ ret.push_back(hex[(*i) & 0xf]);
+ }
+ else ret.push_back(*i);
+ }
+ return ret;
+}
+}
+
void Statement::log(const std::string& message) {
Logger::instance().log(*this, quote(message));
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org