Я реализую клиент STOMP, и у меня есть функция декодирования, которая принимает string
и декодирует его в кадр. Это мой Decode
:
Message* EncoderDecoder::Decode(std::string msg) {
vector <string> allMessage;
boost::split(allMessage, msg, boost::is_any_of("\n"));
Command* c = Command::valueOf(allMessage[0]);
map <string, string> headers;
string body = "";
vector<string> headerValue = {};
int i = 1;
while (allMessage[i] != "") {
boost::split(headerValue, allMessage[i], boost::is_any_of(":"));
string first = headerValue[0];
string second = headerValue[1];
headers.insert({first, second});
i++;
}
i++;
while (i < allMessage.size()) {
body.append(allMessage[i]);
i++;
}
Message* message = new Message(c, &headers, body);
return message;
}
Когда я использую отладчик, при достижении возврата все идеально. Но затем перед возвратом значения он меняет значение заголовка на случайные байты и возвращает их.
Например, если msg
равно
ERROR\nmessage:User already logged in\n\n
В конце я получаю заголовок
\340\021\000T\344\177\000\000eady logged in