in shims/qpid-proton-cpp/src/qpidit/jms_messages_test/Receiver.cpp [236:273]
void Receiver::receiveJmsStreamMessage(const proton::message& msg) {
if(_jmsMessageType.compare("JMS_STREAMMESSAGE_TYPE") != 0) {
throw qpidit::IncorrectMessageBodyTypeError(_jmsMessageType, "JMS_STREAMMESSAGE_TYPE");
}
std::string subType(_subTypeList[_subTypeIndex]);
std::vector<proton::value> l;
proton::get(msg.body(), l);
for (std::vector<proton::value>::const_iterator i=l.begin(); i!=l.end(); ++i) {
if (subType.compare("boolean") == 0) {
_receivedSubTypeList.append(proton::get<bool>(*i) ? Json::Value("True") : Json::Value("False"));
} else if (subType.compare("byte") == 0) {
_receivedSubTypeList.append(Json::Value(toHexStr<int8_t>(proton::get<int8_t>(*i))));
} else if (subType.compare("bytes") == 0) {
_receivedSubTypeList.append(Json::Value(b64_encode(proton::get<proton::binary>(*i))));
} else if (subType.compare("char") == 0) {
std::ostringstream oss;
oss << (char)proton::get<wchar_t>(*i);
_receivedSubTypeList.append(Json::Value(b64_encode(proton::binary(oss.str()))));
} else if (subType.compare("double") == 0) {
double d = proton::get<double>(*i);
_receivedSubTypeList.append(Json::Value(toHexStr<int64_t>(*((int64_t*)&d), true, false)));
} else if (subType.compare("float") == 0) {
float f = proton::get<float>(*i);
_receivedSubTypeList.append(Json::Value(toHexStr<int32_t>(*((int32_t*)&f), true, false)));
} else if (subType.compare("int") == 0) {
_receivedSubTypeList.append(Json::Value(toHexStr<int32_t>(proton::get<int32_t>(*i))));
} else if (subType.compare("long") == 0) {
_receivedSubTypeList.append(Json::Value(toHexStr<int64_t>(proton::get<int64_t>(*i))));
} else if (subType.compare("short") == 0) {
_receivedSubTypeList.append(Json::Value(toHexStr<int16_t>(proton::get<int16_t>(*i))));
} else if (subType.compare("string") == 0) {
_receivedSubTypeList.append(Json::Value(proton::get<std::string>(*i)));
} else {
throw qpidit::UnknownJmsMessageSubTypeError(subType);
}
}
}