input/InputStream: ReadTag() returns std::unique_ptr<Tag>

This commit is contained in:
Max Kellermann
2017-12-20 15:15:27 +01:00
parent 4c4fa68268
commit 73e69edac3
11 changed files with 41 additions and 37 deletions

View File

@@ -45,15 +45,19 @@ AsyncInputStream::AsyncInputStream(EventLoop &event_loop, const char *_url,
AsyncInputStream::~AsyncInputStream()
{
delete tag;
buffer.Clear();
}
void
AsyncInputStream::SetTag(Tag *_tag) noexcept
AsyncInputStream::SetTag(std::unique_ptr<Tag> _tag) noexcept
{
delete std::exchange(tag, _tag);
tag = std::move(_tag);
}
void
AsyncInputStream::ClearTag() noexcept
{
tag.reset();
}
void
@@ -151,7 +155,7 @@ AsyncInputStream::SeekDone() noexcept
cond.broadcast();
}
Tag *
std::unique_ptr<Tag>
AsyncInputStream::ReadTag()
{
return std::exchange(tag, nullptr);