#include "aniqflags.h"
+#define ANIDBUDPCLIENT_CLIENT_COMMAND_DEBUG
+#define ANIDBUDPCLIENT_CLIENT_STATE_MACHINE_DEBUG
+
namespace AniDBUdpClient
{
enum Error
UNKNOWN_REPLY = 0,
// POSITIVE 2XX
- LOGIN_ACCEPTED = 200, //a
- LOGIN_ACCEPTED_NEW_VER = 201, //a
- LOGGED_OUT = 203, //a
- RESOURCE = 205, //d
- STATS = 206, //b
- TOP = 207, //b
- UPTIME = 208, //b
- ENCRYPTION_ENABLED = 209, //c
-
- MYLIST_ENTRY_ADDED = 210, //a
- MYLIST_ENTRY_DELETED = 211, //a
-
- ADDED_FILE = 214, //e
- ADDED_STREAM = 215, //e
-
- ENCODING_CHANGED = 219, //c
-
- FILE = 220, //a
- MYLIST = 221, //a
- MYLIST_STATS = 222, //b
-
- ANIME = 230, //b
- ANIME_BEST_MATCH = 231, //b
- RANDOMANIME = 232, //b
- ANIME_DESCRIPTION = 233, //b
-
- EPISODE = 240, //b
- PRODUCER = 245, //b
- GROUP = 250, //b
-
- BUDDY_LIST = 253, //c
- BUDDY_STATE = 254, //c
- BUDDY_ADDED = 255, //c
- BUDDY_DELETED = 256, //c
- BUDDY_ACCEPTED = 257, //c
- BUDDY_DENIED = 258, //c
-
- VOTED = 260, //b
- VOTE_FOUND = 261, //b
- VOTE_UPDATED = 262, //b
- VOTE_REVOKED = 263, //b
-
- NOTIFICATION_ENABLED = 270, //a
- NOTIFICATION_NOTIFY = 271, //a
- NOTIFICATION_MESSAGE = 272, //a
- NOTIFICATION_BUDDY = 273, //c
- NOTIFICATION_SHUTDOWN = 274, //c
- PUSHACK_CONFIRMED = 280, //a
- NOTIFYACK_SUCCESSFUL_M = 281, //a
- NOTIFYACK_SUCCESSFUL_N = 282, //a
- NOTIFICATION = 290, //a
- NOTIFYLIST = 291, //a
- NOTIFYGET_MESSAGE = 292, //a
- NOTIFYGET_NOTIFY = 293, //a
-
- SENDMSG_SUCCESSFUL = 294, //a
- USER = 295, //d
+ LOGIN_ACCEPTED = 200,
+ LOGIN_ACCEPTED_NEW_VERSION = 201,
+ LOGGED_OUT = 203,
+ RESOURCE = 205,
+ STATS = 206,
+ TOP = 207,
+ UPTIME = 208,
+ ENCRYPTION_ENABLED = 209,
+ MYLIST_ENTRY_ADDED = 210,
+ MYLIST_ENTRY_DELETED = 211,
+ ADDED_FILE = 214,
+ ADDED_STREAM = 215,
+ EXPORT_QUEUED = 217,
+ EXPORT_CANCELLED = 218,
+ ENCODING_CHANGED = 219,
+ FILE = 220,
+ MYLIST = 221,
+ MYLIST_STATS = 222,
+ WISHLIST = 223,
+ NOTIFICATION = 224,
+ GROUP_STATUS = 225,
+ WISHLIST_ENTRY_ADDED = 226,
+ WISHLIST_ENTRY_DELETED = 227,
+ WISHLIST_ENTRY_UPDATED = 228,
+ MULTIPLE_WISHLIST = 229,
+ ANIME = 230,
+ ANIME_BEST_MATCH = 231,
+ RANDOM_ANIME = 232,
+ ANIME_DESCRIPTION = 233,
+ REVIEW = 234,
+ CHARACTER = 235,
+ SONG = 236,
+ ANIMETAG = 237,
+ CHARACTERTAG = 238,
+ EPISODE = 240,
+ UPDATED = 243,
+ TITLE = 244,
+ CREATOR = 245,
+ NOTIFICATION_ENTRY_ADDED = 246,
+ NOTIFICATION_ENTRY_DELETED = 247,
+ NOTIFICATION_ENTRY_UPDATE = 248,
+ MULTIPLE_NOTIFICATION = 249,
+ GROUP = 250,
+ CATEGORY = 251,
+ BUDDY_LIST = 253,
+ BUDDY_STATE = 254,
+ BUDDY_ADDED = 255,
+ BUDDY_DELETED = 256,
+ BUDDY_ACCEPTED = 257,
+ BUDDY_DENIED = 258,
+ VOTED = 260,
+ VOTE_FOUND = 261,
+ VOTE_UPDATED = 262,
+ VOTE_REVOKED = 263,
+ HOT_ANIME = 265,
+ RANDOM_RECOMMENDATION = 266,
+ RANDOM_SIMILAR = 267,
+ NOTIFICATION_ENABLED = 270,
+ NOTIFYACK_SUCCESSFUL_MESSAGE = 281,
+ NOTIFYACK_SUCCESSFUL_NOTIFIATION = 282,
+ NOTIFICATION_STATE = 290,
+ NOTIFYLIST = 291,
+ NOTIFYGET_MESSAGE = 292,
+ NOTIFYGET_NOTIFY = 293,
+ SENDMESSAGE_SUCCESSFUL = 294,
+ USER_ID = 295,
+ CALENDAR = 297,
// AFFIRMATIVE/NEGATIVE 3XX
- PONG = 300, //a
- AUTHPONG = 301, //c
- NO_SUCH_RESOURCE = 305, //d
- API_PASSWORD_NOT_DEFINED = 309, //c
-
- FILE_ALREADY_IN_MYLIST = 310, //a
- MYLIST_ENTRY_EDITED = 311, //a
- MULTIPLE_MYLIST_ENTRIES = 312, //e
-
- SIZE_HASH_EXISTS = 314, //c
- INVALID_DATA = 315, //c
- STREAMNOID_USED = 316, //c
-
- NO_SUCH_FILE = 320, //a
- NO_SUCH_ENTRY = 321, //a
- MULTIPLE_FILES_FOUND = 322, //b
-
- NO_SUCH_ANIME = 330, //b
- NO_SUCH_ANIME_DESCRIPTION = 333, //b
- NO_SUCH_EPISODE = 340, //b
- NO_SUCH_PRODUCER = 345, //b
- NO_SUCH_GROUP = 350, //b
-
- BUDDY_ALREADY_ADDED = 355, //c
- NO_SUCH_BUDDY = 356, //c
- BUDDY_ALREADY_ACCEPTED = 357, //c
- BUDDY_ALREADY_DENIED = 358, //c
-
- NO_SUCH_VOTE = 360, //b
- INVALID_VOTE_TYPE = 361, //b
- INVALID_VOTE_VALUE = 362, //b
- PERMVOTE_NOT_ALLOWED = 363, //b
- ALREADY_PERMVOTED = 364, //b
-
- NOTIFICATION_DISABLED = 370, //a
- NO_SUCH_PACKET_PENDING = 380, //a
- NO_SUCH_ENTRY_M = 381, //a
- NO_SUCH_ENTRY_N = 382, //a
-
- NO_SUCH_MESSAGE = 392, //a
- NO_SUCH_NOTIFY = 393, //a
- NO_SUCH_USER = 394, //a
+ PONG = 300,
+ AUTHPONG = 301,
+ NO_SUCH_RESOURCE = 305,
+ API_PASSWORD_NOT_DEFINED = 309,
+ FILE_ALREADY_IN_MYLIST = 310,
+ MYLIST_ENTRY_EDITED = 311,
+ MULTIPLE_MYLIST_ENTRIES = 312,
+ WATCHED = 313,
+ SIZE_HASH_EXISTS = 314,
+ INVALID_DATA = 315,
+ STREAMNOID_USED = 316,
+ EXPORT_NO_SUCH_TEMPLATE = 317,
+ EXPORT_ALREADY_IN_QUEUE = 318,
+ EXPORT_NO_EXPORT_QUEUED_OR_IS_PROCESSING = 319,
+ NO_SUCH_FILE = 320,
+ NO_SUCH_ENTRY = 321,
+ MULTIPLE_FILES_FOUND = 322,
+ NO_SUCH_WISHLIST = 323,
+ NO_SUCH_NOTIFICATION = 324,
+ NO_GROUPS_FOUND = 325,
+ NO_SUCH_ANIME = 330,
+ NO_SUCH_DESCRIPTION = 333,
+ NO_SUCH_REVIEW = 334,
+ NO_SUCH_CHARACTER = 335,
+ NO_SUCH_SONG = 336,
+ NO_SUCH_ANIMETAG = 337,
+ NO_SUCH_CHARACTERTAG = 338,
+ NO_SUCH_EPISODE = 340,
+ NO_SUCH_UPDATES = 343,
+ NO_SUCH_TITLES = 344,
+ NO_SUCH_CREATOR = 345,
+ NO_SUCH_GROUP = 350,
+ NO_SUCH_CATEGORY = 351,
+ BUDDY_ALREADY_ADDED = 355,
+ NO_SUCH_BUDDY = 356,
+ BUDDY_ALREADY_ACCEPTED = 357,
+ BUDDY_ALREADY_DENIED = 358,
+ NO_SUCH_VOTE = 360,
+ INVALID_VOTE_TYPE = 361,
+ INVALID_VOTE_VALUE = 362,
+ PERMVOTE_NOT_ALLOWED = 363,
+ ALREADY_PERMVOTED = 364,
+ HOT_ANIME_EMPTY = 365,
+ RANDOM_RECOMMENDATION_EMPTY = 366,
+ RANDOM_SIMILAR_EMPTY = 367,
+ NOTIFICATION_DISABLED = 370,
+ NO_SUCH_ENTRY_MESSAGE = 381,
+ NO_SUCH_ENTRY_NOTIFICATION = 382,
+ NO_SUCH_MESSAGE = 392,
+ NO_SUCH_NOTIFY = 393,
+ NO_SUCH_USER = 394,
+ CALENDAR_EMPTY = 397,
+ NO_CHANGES = 399,
// NEGATIVE 4XX
- NOT_LOGGED_IN = 403, //a
-
- NO_SUCH_MYLIST_FILE = 410, //a
- NO_SUCH_MYLIST_ENTRY = 411, //a
-
+ NOT_LOGGED_IN = 403,
+ NO_SUCH_MYLIST_FILE = 410,
+ NO_SUCH_MYLIST_ENTRY = 411,
+ MYLIST_UNAVAILABLE = 412,
// CLIENT SIDE FAILURE 5XX
- LOGIN_FAILED = 500, //a
- LOGIN_FIRST = 501, //a
- ACCESS_DENIED = 502, //a
- CLIENT_VERSION_OUTDATED = 503, //a
- CLIENT_BANNED = 504, //a
- ILLEGAL_INPUT_OR_ACCESS_DENIED = 505, //a
- INVALID_SESSION = 506, //a
- NO_SUCH_ENCRYPTION_TYPE = 509, //c
- ENCODING_NOT_SUPPORTED = 519, //c
-
- BANNED = 555, //a
- UNKNOWN_COMMAND = 598, //a
-
+ LOGIN_FAILED = 500,
+ LOGIN_FIRST = 501,
+ ACCESS_DENIED = 502,
+ CLIENT_VERSION_OUTDATED = 503,
+ CLIENT_BANNED = 504,
+ ILLEGAL_INPUT_OR_ACCESS_DENIED = 505,
+ INVALID_SESSION = 506,
+ NO_SUCH_ENCRYPTION_TYPE = 509,
+ ENCODING_NOT_SUPPORTED = 519,
+ BANNED = 555,
+ UNKNOWN_COMMAND = 598,
// SERVER SIDE FAILURE 6XX
- INTERNAL_SERVER_ERROR = 600, //a
- ANIDB_OUT_OF_SERVICE = 601, //a
- SERVER_BUSY = 602, //d
- API_VIOLATION = 666, //a
+ INTERNAL_SERVER_ERROR = 600,
+ ANIDB_OUT_OF_SERVICE = 601,
+ SERVER_BUSY = 602,
+ NO_DATA = 603,
+ TIMEOUT_DELAY_AND_RESUBMIT = 604,
+ API_VIOLATION = 666,
+
+ // NOTIFICATIONS 7XX
+ PUSHACK_CONFIRMED = 701,
+ NO_SUCH_PACKET_PENDING = 702,
};
enum State {