diff options
author | Charles E. Rolke <chug@apache.org> | 2015-01-14 18:54:00 +0000 |
---|---|---|
committer | Charles E. Rolke <chug@apache.org> | 2015-01-14 18:54:00 +0000 |
commit | 5c96f379d02dc43bca91260c247c10f3bb1733f2 (patch) | |
tree | 17a769b3489271b2b6349b18ff343ab71e589ccb /qpid/cpp/examples/messaging/server.cpp | |
parent | 9b1d37a0cbef71478b58c6acee4f72a2474a9f7d (diff) | |
download | qpid-python-5c96f379d02dc43bca91260c247c10f3bb1733f2.tar.gz |
QPID-6308: Preserve request string encoding in response string.
Non-string requests are echoed as utf8 strings.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1651773 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/examples/messaging/server.cpp')
-rw-r--r-- | qpid/cpp/examples/messaging/server.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/qpid/cpp/examples/messaging/server.cpp b/qpid/cpp/examples/messaging/server.cpp index 29389a83bb..ba9fa9e063 100644 --- a/qpid/cpp/examples/messaging/server.cpp +++ b/qpid/cpp/examples/messaging/server.cpp @@ -52,10 +52,24 @@ int main(int argc, char** argv) { const Address& address = request.getReplyTo(); if (address) { Sender sender = session.createSender(address); - std::string s = request.getContentObject(); - std::transform(s.begin(), s.end(), s.begin(), toupper); Message response; - response.setContentObject(s); + + qpid::types::Variant requestObj = request.getContentObject(); + if (requestObj.getType() == qpid::types::VAR_STRING) { + // Received a string. + // Server returns request string in upper case with same encoding. + std::string s = requestObj; + std::transform(s.begin(), s.end(), s.begin(), toupper); + qpid::types::Variant responseObj(s); + responseObj.setEncoding( requestObj.getEncoding() ); + response.setContentObject( responseObj ); + } else { + // Received something other than a string. + // Server echos received object as a utf8 string. + qpid::types::Variant responseObj( requestObj.asString() ); + responseObj.setEncoding( "utf8" ); + response.setContentObject( requestObj ); + } sender.send(response); std::cout << "Processed request: " << request.getContentObject() |