summaryrefslogtreecommitdiff
path: root/qpid/cpp/examples/messaging/server.cpp
diff options
context:
space:
mode:
authorCharles E. Rolke <chug@apache.org>2015-01-14 18:54:00 +0000
committerCharles E. Rolke <chug@apache.org>2015-01-14 18:54:00 +0000
commit5c96f379d02dc43bca91260c247c10f3bb1733f2 (patch)
tree17a769b3489271b2b6349b18ff343ab71e589ccb /qpid/cpp/examples/messaging/server.cpp
parent9b1d37a0cbef71478b58c6acee4f72a2474a9f7d (diff)
downloadqpid-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.cpp20
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()