libstore: simplify TransferSource::awaitData

don't pass in a lock that's only used inside this function.

Change-Id: I15c01e9cfe343cf13828ae3b3742c36ae697291f
This commit is contained in:
eldritch horrors 2024-11-09 01:17:28 +01:00
parent 5d02800e57
commit 90536e27e1

View file

@ -893,11 +893,13 @@ struct curlFileTransfer : public FileTransfer
}
}
void awaitData(Sync<State>::Lock & state)
void awaitData()
{
/* Grab data if available, otherwise wait for the download
thread to wake us up. */
while (buffered.empty()) {
auto state(_state->lock());
if (state->data.empty()) {
if (state->done) {
if (state->exc) {
@ -929,10 +931,7 @@ struct curlFileTransfer : public FileTransfer
size_t total = readPartial(data, len);
while (total < len) {
{
auto state(_state->lock());
awaitData(state);
}
awaitData();
const auto current = readPartial(data + total, len - total);
total += current;
if (total == 0 || current == 0) {
@ -950,8 +949,7 @@ struct curlFileTransfer : public FileTransfer
auto metadata = item->metadataPromise.get_future().get();
auto source = make_box_ptr<TransferSource>(_state, item);
auto lock(_state->lock());
source->awaitData(lock);
source->awaitData();
return {std::move(metadata), std::move(source)};
}