MPD: protocol/Ack.hxx Source File

MPD 0.20.15

Ack.hxx
Go to the documentation of this file.
1 /*
2 * Copyright 2003-2017 The Music Player Daemon Project
3 * http://www.musicpd.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20 #ifndef MPD_ACK_H
21 #define MPD_ACK_H
22
23 #include <stdexcept>
24
25 #include <stdio.h>
26
27 class Domain;
28
29 enum ack {
30 ACK_ERROR_NOT_LIST = 1,
31 ACK_ERROR_ARG = 2,
32 ACK_ERROR_PASSWORD = 3,
33 ACK_ERROR_PERMISSION = 4,
34 ACK_ERROR_UNKNOWN = 5,
35
36 ACK_ERROR_NO_EXIST = 50,
37 ACK_ERROR_PLAYLIST_MAX = 51,
38 ACK_ERROR_SYSTEM = 52,
39 ACK_ERROR_PLAYLIST_LOAD = 53,
40 ACK_ERROR_UPDATE_ALREADY = 54,
41 ACK_ERROR_PLAYER_SYNC = 55,
42 ACK_ERROR_EXIST = 56,
43 };
44
45 extern const Domain ack_domain;
46
47 class ProtocolError : public std::runtime_error {
48 enum ack code;
49
50 public:
51 ProtocolError(enum ack _code, const char *msg)
52 :std::runtime_error(msg), code(_code) {}
53
54 enum ack GetCode() const {
55 return code;
56 }
57 };
58
59 template<typename... Args>
60 static inline ProtocolError
61 FormatProtocolError(enum ack code, const char *fmt, Args&&... args) noexcept
62 {
63 char buffer[256];
64 snprintf(buffer, sizeof(buffer), fmt, std::forward<Args>(args)...);
65 return ProtocolError(code, buffer);
66 }
67
68 #endif
ACK_ERROR_PLAYER_SYNC
Definition: Ack.hxx:41
ack
ack
Definition: Ack.hxx:29
ACK_ERROR_ARG
Definition: Ack.hxx:31
ACK_ERROR_PLAYLIST_MAX
Definition: Ack.hxx:37
ACK_ERROR_PASSWORD
Definition: Ack.hxx:32
ACK_ERROR_NO_EXIST
Definition: Ack.hxx:36
ack_domain
const Domain ack_domain
ProtocolError::ProtocolError
ProtocolError(enum ack _code, const char *msg)
Definition: Ack.hxx:51
ACK_ERROR_NOT_LIST
Definition: Ack.hxx:30
ProtocolError::GetCode
enum ack GetCode() const
Definition: Ack.hxx:54
Domain
Definition: Domain.hxx:33
ProtocolError
Definition: Ack.hxx:47
ACK_ERROR_PLAYLIST_LOAD
Definition: Ack.hxx:39
ACK_ERROR_SYSTEM
Definition: Ack.hxx:38
ACK_ERROR_UPDATE_ALREADY
Definition: Ack.hxx:40
ACK_ERROR_EXIST
Definition: Ack.hxx:42
ACK_ERROR_UNKNOWN
Definition: Ack.hxx:34
fmt
const char * fmt
Definition: Client.hxx:231
ACK_ERROR_PERMISSION
Definition: Ack.hxx:33
FormatProtocolError
static ProtocolError FormatProtocolError(enum ack code, const char *fmt, Args &&... args) noexcept
Definition: Ack.hxx:61