encoder/interface: make Read() `noexcept` (all implementations are)

This commit is contained in:
Max Kellermann 2022-07-12 10:04:17 +02:00
parent 31d89b36cf
commit e861d4f83d
5 changed files with 8 additions and 14 deletions

View File

@ -102,7 +102,7 @@ public:
* @param length the maximum length of the destination buffer * @param length the maximum length of the destination buffer
* @return the number of bytes written to #dest * @return the number of bytes written to #dest
*/ */
virtual std::size_t Read(void *dest, std::size_t length) = 0; virtual std::size_t Read(void *dest, std::size_t length) noexcept = 0;
}; };
class PreparedEncoder { class PreparedEncoder {

View File

@ -33,7 +33,7 @@ public:
buffer.Append({(const std::byte *)data, length}); buffer.Append({(const std::byte *)data, length});
} }
size_t Read(void *dest, size_t length) override { size_t Read(void *dest, size_t length) noexcept override {
return buffer.Read((std::byte *)dest, length); return buffer.Read((std::byte *)dest, length);
} }
}; };

View File

@ -233,7 +233,7 @@ public:
* Reads data from the encoder (as much as available) and * Reads data from the encoder (as much as available) and
* returns it as a new #page object. * returns it as a new #page object.
*/ */
PagePtr ReadPage(); PagePtr ReadPage() noexcept;
/** /**
* Broadcasts a page struct to all clients. * Broadcasts a page struct to all clients.
@ -247,7 +247,7 @@ public:
* *
* Mutext must not be locked. * Mutext must not be locked.
*/ */
void BroadcastFromEncoder(); void BroadcastFromEncoder() noexcept;
/** /**
* Mutext must not be locked. * Mutext must not be locked.

View File

@ -142,7 +142,7 @@ HttpdOutput::OnAccept(UniqueSocketDescriptor fd,
} }
PagePtr PagePtr
HttpdOutput::ReadPage() HttpdOutput::ReadPage() noexcept
{ {
if (unflushed_input >= 65536) { if (unflushed_input >= 65536) {
/* we have fed a lot of input into the encoder, but it /* we have fed a lot of input into the encoder, but it
@ -277,7 +277,7 @@ HttpdOutput::BroadcastPage(PagePtr page) noexcept
} }
void void
HttpdOutput::BroadcastFromEncoder() HttpdOutput::BroadcastFromEncoder() noexcept
{ {
/* synchronize with the IOThread */ /* synchronize with the IOThread */
{ {

View File

@ -124,7 +124,7 @@ SnapcastOutput::OnAccept(UniqueSocketDescriptor fd,
} }
static AllocatedArray<std::byte> static AllocatedArray<std::byte>
ReadEncoder(Encoder &encoder) ReadEncoder(Encoder &encoder) noexcept
{ {
std::byte buffer[4096]; std::byte buffer[4096];
@ -137,13 +137,7 @@ inline void
SnapcastOutput::OpenEncoder(AudioFormat &audio_format) SnapcastOutput::OpenEncoder(AudioFormat &audio_format)
{ {
encoder = prepared_encoder->Open(audio_format); encoder = prepared_encoder->Open(audio_format);
try {
codec_header = ReadEncoder(*encoder); codec_header = ReadEncoder(*encoder);
} catch (...) {
delete encoder;
throw;
}
unflushed_input = 0; unflushed_input = 0;
} }