Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void QaSProtocolServer::serverCore()
- {
- boost::asio::ip::udp::socket socket(ioService,
- boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(),
- m_serverPort));
- boost::asio::streambuf sb;
- boost::asio::streambuf::mutable_buffers_type mutableBuf =
- sb.prepare(sizeof(MSG_T));
- size_t receivedBytes = socket.receive_from(mutableBuf, clientEndpoint);
- sb.commit(receivedBytes);
- std::istream is(&sb);
- uint8_t msg_type;
- is.read((char*)&msg_type, sizeof(msg_type));
- uint64_t key;
- is.read((char*)&key, sizeof(key));
- sb.consume(receivedBytes);
- std::ostream os(&sb);
- CITE_MSG_T replyMsg;
- std::vector<std::string> quoteParts;
- try
- {
- quoteParts = prepareQuote(replyMsg);
- }
- catch (QaSProtocolServerException& e)
- {
- sendServerErrMsg(socket, clientEndpoint);
- return;
- }
- uint16_t index = 0;
- replyMsg.msg_id = 2;
- replyMsg.key = key;
- replyMsg.text.data = NULL;
- BOOST_FOREACH(std::string quotePart, quoteParts)
- {
- replyMsg.index = htons(index++);
- if (replyMsg.text.data != NULL)
- {
- delete[] replyMsg.text.data;
- }
- replyMsg.text.data = new char[quotePart.size()];
- strcpy(replyMsg.text.data, quotePart.c_str());
- replyMsg.text.data_length = strlen(replyMsg.text.data);
- qDebug() << replyMsg.text.data_length;
- os.write((char*)&replyMsg,
- sizeof(replyMsg) - sizeof(replyMsg.text.data));
- os.write(replyMsg.text.data, strlen(replyMsg.text.data));
- size_t sent_bytes = socket.send_to(sb.data(), clientEndpoint);
- sb.consume(sent_bytes);
- }
- socket.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement