void SOCKS5BytestreamClientSession::sendData() { if (!readBytestream->isFinished()) { try { boost::shared_ptr<ByteArray> dataToSend = readBytestream->read(boost::numeric_cast<size_t>(chunkSize)); connection->write(createSafeByteArray(*dataToSend)); onBytesSent(dataToSend->size()); } catch (const BytestreamException&) { finish(true); } } else { finish(false); } }
void IBBSendSession::sendMoreData() { try { std::shared_ptr<ByteArray> data = bytestream->read(blockSize); if (!data->empty()) { waitingForData = false; IBBRequest::ref request = IBBRequest::create(from, to, IBB::createIBBData(id, sequenceNumber, *data), router); sequenceNumber++; request->onResponse.connect(boost::bind(&IBBSendSession::handleIBBResponse, this, _1, _2)); request->send(); currentRequest = request; onBytesSent(data->size()); } else { waitingForData = true; } } catch (const BytestreamException&) { finish(FileTransferError(FileTransferError::ReadError)); } }