void UDPServer::start() { sleep(UDPSleep); while(UDPLoopGuard) { VideoFile videofileToSend = getFromQueue(); std::ifstream videoFile; videoFile.open(videofileToSend.getLocalPath()); bool isBegin = true; uint datagramNumber = 1; while(!videoFile.eof()) { int maxDataSize = MAX_DATAGRAM_SIZE - DATAGRAM_CUSTOM_HEADER_SIZE; char bytesFromFile[maxDataSize]; memset(bytesFromFile, 0, maxDataSize); videoFile.read(bytesFromFile, maxDataSize); std::string bytesStr(bytesFromFile, videoFile.gcount()); if (isBegin) { sendDatagram(datagramNumber, videofileToSend.getId(), UdpMessagesTypes::Begin, bytesStr,videofileToSend.getTimestamp()); } else { sendDatagram(datagramNumber, videofileToSend.getId(), UdpMessagesTypes::Middle, bytesStr,videofileToSend.getTimestamp()); } isBegin = false; datagramNumber++; } sendDatagram(datagramNumber, videofileToSend.getId(), UdpMessagesTypes::End, "", videofileToSend.getTimestamp()); videoFile.close(); } }
string Configuration::getBytes(const std::string& key) const { std::string value = get(key); QByteArray arr(value.data(), value.size()); QByteArray bytes = QByteArray::fromBase64(arr); std::string bytesStr(bytes.data(), bytes.size()); return bytesStr; }