protocol/Ack: add exception class wrapping enum ack
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user