protocol/Ack: add exception class wrapping enum ack

This commit is contained in:
Max Kellermann
2015-12-18 09:50:48 +01:00
parent 8bb5a565cd
commit e939d667d9
13 changed files with 289 additions and 377 deletions

View File

@@ -20,6 +20,10 @@
#ifndef MPD_ACK_H
#define MPD_ACK_H
#include <stdexcept>
#include <stdio.h>
class Domain;
enum ack {
@@ -40,4 +44,25 @@ enum ack {
extern const Domain ack_domain;
class ProtocolError : public std::runtime_error {
enum ack code;
public:
ProtocolError(enum ack _code, const char *msg)
:std::runtime_error(msg), code(_code) {}
enum ack GetCode() const {
return code;
}
};
template<typename... Args>
static inline ProtocolError
FormatProtocolError(enum ack code, const char *fmt, Args&&... args) noexcept
{
char buffer[256];
snprintf(buffer, sizeof(buffer), fmt, std::forward<Args>(args)...);
return ProtocolError(code, buffer);
}
#endif