26 #define kept_assert(x) (x)
28 #define kept_assert(x) assert(x)
32 #define FAR_FUTURE ((time_t) (((time_t) 0x7fffffff) << ((sizeof (time_t) - 4) * 8)))
33 #define A_LONG_TIME (999999)
268 return code >= 1 && code < 100;
272 return code >= 100 && code < 200;
276 return code >= 200 && code < 300;
280 return code >= 400 && code < 500;
284 return code >= 500 && code < 600;
288 return code >= 1000 && code < 2000;
306 from.detail =
nullptr;
312 from.detail =
nullptr;
316 virtual inline const char *
what()
const throw()
override {
329 virtual inline const char *
what()
const throw()
override {
334 #define CMD_RANGE_SERVICE (1000)
335 #define CMD_RANGE_ENGINE (2000)
336 #define CMD_RANGE_USER (3000)
337 #define CMD_RANGE_MEDIA_MANAGER (4000)
338 #define CMD_RANGE_TUNING (5000)
339 #define CMD_RANGE_PANDORA (10000)
340 #define CMD_RANGE_TONEGENERATOR (11000)
341 #define CMD_RANGE_FILESYSTEM (12000)
342 #define CMD_RANGE_SPOTIFY (13000)
Exception for command execution problems.
Definition: fundamentals.h:293
const RESPONSE_CODE _reason
Definition: fundamentals.h:295
CommandError(RESPONSE_CODE r, const std::string &message)
Definition: fundamentals.h:301
virtual const char * what() const override
Definition: fundamentals.h:316
CommandError(RESPONSE_CODE r)
Definition: fundamentals.h:298
char * detail
Definition: fundamentals.h:296
RESPONSE_CODE reason(void) const
Definition: fundamentals.h:315
CommandError & operator=(const CommandError &)=delete
CommandError(CommandError &&from)
Definition: fundamentals.h:304
CommandError(const CommandError &)=delete
CommandError(RESPONSE_CODE r, const char *message)
Definition: fundamentals.h:299
Definition: fundamentals.h:321
InitializationException()
Definition: fundamentals.h:325
std::string _detail
Definition: fundamentals.h:322
InitializationException(const char *reason)
Definition: fundamentals.h:326
const char * detail
Definition: fundamentals.h:323
InitializationException(const char *library, const char *reason)
Definition: fundamentals.h:327
virtual const char * what() const override
Definition: fundamentals.h:329
Privilege management for media sources.
Definition: fundamentals.h:351
bool isDecendableBy(const User *user) const
Definition: fundamentals.h:380
bool isUsableBy(const User *user) const
Definition: fundamentals.h:377
virtual bool isOwnedBy(const User *user) const =0
Action
Access actions for an object.
Definition: fundamentals.h:364
@ READ
Read the item's contents/configuration.
@ SEE
View existence of item.
@ USE
Use the item to do something.
bool isVisibleBy(const User *user) const
Definition: fundamentals.h:374
Type
Access levels for an object.
Definition: fundamentals.h:355
@ SHARED
Others can use this, but not derive from it.
@ PRIVATE
Visible by owner only.
@ PUBLISHED
Use and derive by anyone but only owner can manipulate.
@ PUBLIC
Anyone can manipulate this.
@ DISOWNED
Object has no owner.
bool isEditableBy(const User *user) const
Definition: fundamentals.h:386
virtual bool hasPermission(const User *user, Action action) const =0
bool isReadableBy(const User *user) const
Definition: fundamentals.h:383
Data about each user.
Definition: user.h:53
bool isServerFailure(RESPONSE_CODE code)
Definition: fundamentals.h:283
std::vector< const class User * > UserList
Definition: fundamentals.h:348
bool isDataField(RESPONSE_CODE code)
Definition: fundamentals.h:271
struct AudioSettings_t AudioSettings
Audio output device & driver parameters.
bool isSuccess(RESPONSE_CODE code)
Definition: fundamentals.h:275
enum server_status_t RESPONSE_CODE
SearchRange
Definition: fundamentals.h:35
@ SHALLOW
Get matching things, but not their contents.
@ REQUESTS
Search requestable sources for matches, but not their contents.
@ EXHAUSTIVE
Get everything matching, and all their contents.
@ REQUESTABLE
Search requestable sources for matches; return all items matching.
@ KNOWN
Get whatever we know about; don't perform external searches.
bool forRequest(SearchRange range)
Definition: fundamentals.h:42
bool isUserAction(RESPONSE_CODE code)
Definition: fundamentals.h:287
bool deepSearch(SearchRange range)
Definition: fundamentals.h:45
const int CMD_INVALID
Definition: fundamentals.h:344
server_status_t
Definition: fundamentals.h:77
@ S_PENDING
Request is pending but will succeed eventually.
Definition: fundamentals.h:175
@ E_RESOURCE
Inadequate memory, disk, etc.
Definition: fundamentals.h:199
@ A_SOURCE_ADD
Definition: fundamentals.h:257
@ V_STALLED
Definition: fundamentals.h:83
@ V_QUEUE_STOPPED
Definition: fundamentals.h:87
@ I_COVERART
Definition: fundamentals.h:116
@ A_IMBECILE
Definition: fundamentals.h:242
@ I_CHOICEEXPLANATION
Definition: fundamentals.h:119
@ E_TIMEOUT
Event did not occur within specified duration.
Definition: fundamentals.h:210
@ V_SOURCE_STATUS
Definition: fundamentals.h:103
@ V_PLAYLISTRATING_CHANGED
Definition: fundamentals.h:96
@ I_OUTPUT_DRIVER
Definition: fundamentals.h:147
@ F_PANDORA
Definition: fundamentals.h:230
@ E_TRANSFORM_FAILED
Definition: fundamentals.h:193
@ V_SELECTIONMETHOD
Definition: fundamentals.h:105
@ A_STOPPED
Definition: fundamentals.h:244
@ I_SERVICE_USER
Definition: fundamentals.h:140
@ F_PLAYER_EMPTY
Definition: fundamentals.h:225
@ E_NO_ASSOCIATION
Missing association data, i.e., song has no playlist.
Definition: fundamentals.h:208
@ F_RESOURCE
Definition: fundamentals.h:229
@ A_SIGNED_IN
Definition: fundamentals.h:239
@ I_CONTROLPROXY
Definition: fundamentals.h:138
@ E_BUG
A bug was encountered (likely hit default in a case statement.)
Definition: fundamentals.h:220
@ F_PERMISSION
Definition: fundamentals.h:232
@ E_METAPLAYLIST
Require a real playlist.
Definition: fundamentals.h:201
@ I_SOURCE
Definition: fundamentals.h:121
@ I_RATING
Definition: fundamentals.h:114
@ I_PROXY
Definition: fundamentals.h:137
@ A_CREATED_PLAYLIST
Definition: fundamentals.h:254
@ E_MEDIA_FAILURE
Source failure.
Definition: fundamentals.h:218
@ F_AUDIO_FAILURE
Definition: fundamentals.h:236
@ V_YELL
Definition: fundamentals.h:100
@ A_CHANGED_MIX
Definition: fundamentals.h:247
@ I_STATISTICS_SEQUENTIAL_FAILS
Definition: fundamentals.h:155
@ I_PLAYLIST
Definition: fundamentals.h:113
@ I_PATHNAME
Definition: fundamentals.h:144
@ I_STATISTICS_ATTEMPTS
Definition: fundamentals.h:152
@ E_BAD_COMMAND
Definition: fundamentals.h:185
@ E_DUPLICATE
Definition: fundamentals.h:188
@ E_QUOTA
Quota restriction encountered.
Definition: fundamentals.h:196
@ A_REQUEST_CLEAR
Definition: fundamentals.h:261
@ I_ARTIST
Definition: fundamentals.h:111
@ I_ATTACHED_THING
Transmit the attached thing instead of a response message.
Definition: fundamentals.h:159
@ V_TRACK_COMPLETE
Definition: fundamentals.h:84
@ A_SKIPPED
Definition: fundamentals.h:243
@ A_RANDOMPLAY
Definition: fundamentals.h:251
@ I_CACHE_MINIMUM
Definition: fundamentals.h:142
@ A_PAUSED
Definition: fundamentals.h:245
@ V_QUEUE_RANDOM
Definition: fundamentals.h:89
@ I_SONG
Definition: fundamentals.h:112
@ I_AUTOTUNE_MODE
Definition: fundamentals.h:132
@ A_SOURCE_REMOVE
Definition: fundamentals.h:259
@ I_OUTPUT_DEVICE
Definition: fundamentals.h:148
@ F_NETWORK_TIMEOUT
Definition: fundamentals.h:234
@ I_OUTPUT_SERVER
Definition: fundamentals.h:150
@ I_STATISTICS_DONATIONS
Definition: fundamentals.h:157
@ E_MEDIA_VALUE
Source doesn't accept a certain value.
Definition: fundamentals.h:216
@ A_MIX_ADDED
Definition: fundamentals.h:248
@ A_SELECTED_PLAYLIST
Definition: fundamentals.h:253
@ E_CREDENTIALS
Definition: fundamentals.h:191
@ S_DATA
Definition: fundamentals.h:167
@ F_NETWORK_FAILURE
Definition: fundamentals.h:226
@ I_SELECTION_ALGORITHM
Definition: fundamentals.h:145
@ V_QUEUE_CHANGED
Definition: fundamentals.h:99
@ I_GENRE
Definition: fundamentals.h:117
@ V_QUEUE_REQUEST
Definition: fundamentals.h:88
@ V_IDLE
Definition: fundamentals.h:86
@ A_RENAMED_PLAYLIST
Definition: fundamentals.h:255
@ I_HISTORYSIZE
Definition: fundamentals.h:130
@ E_PLAYLIST_REQUIRED
Song must have a playlist for this action.
Definition: fundamentals.h:211
@ V_BETWEEN_TRACKS
Definition: fundamentals.h:85
@ E_EXPRESSION
Invalid expression.
Definition: fundamentals.h:209
@ A_MIX_REMOVED
Definition: fundamentals.h:249
@ E_INVALID
Definition: fundamentals.h:192
@ F_SHUTDOWN
Definition: fundamentals.h:227
@ V_SONGRATING_CHANGED
Definition: fundamentals.h:98
@ I_AUDIOQUALITY
Definition: fundamentals.h:131
@ I_INFO_URL
Definition: fundamentals.h:115
@ E_VARIOUS
All failures, but a varity of reasons.
Definition: fundamentals.h:207
@ E_MEDIA_MANAGER
Can't do that on media manager.
Definition: fundamentals.h:217
@ S_NOOP
Nothing to do; default success.
Definition: fundamentals.h:173
@ A_REQUEST_ADD
Definition: fundamentals.h:260
@ V_SELECTEDPLAYLIST
Definition: fundamentals.h:92
@ I_OUTPUT_ID
Definition: fundamentals.h:149
@ I_PAUSE_TIMEOUT
Definition: fundamentals.h:133
@ I_PLAYLISTRATING
Definition: fundamentals.h:118
@ E_WRONG_STATE
Definition: fundamentals.h:190
@ I_ID
Definition: fundamentals.h:109
@ I_CACHE_MAXIMUM
Definition: fundamentals.h:143
@ F_CANNOT_OUTPUT
Definition: fundamentals.h:235
@ E_CONFLICT
Definition: fundamentals.h:194
@ I_NAME
Definition: fundamentals.h:122
@ I_STATISTICS_REPLACEMENTS
Definition: fundamentals.h:156
@ F_AUTHENTICATION
Definition: fundamentals.h:228
@ E_NAK
Definition: fundamentals.h:187
@ NO_REPLY
Do not transmit any reply.
Definition: fundamentals.h:78
@ I_USER_PRIVILEGES
Definition: fundamentals.h:127
@ E_UNSUPPORTED
Definition: fundamentals.h:198
@ A_REQUESTS
Definition: fundamentals.h:250
@ E_BAD_SCHEMA
JSON command is structured incorrectly.
Definition: fundamentals.h:212
@ E_WRONGTYPE
Operand was of wrong type.
Definition: fundamentals.h:202
@ I_STATISTICS_PLAYS
Definition: fundamentals.h:153
@ E_NOT_IMPLEMENTED
Definition: fundamentals.h:221
@ S_MATCH
Matches for criteria were found.
Definition: fundamentals.h:171
@ V_PAUSED
Definition: fundamentals.h:82
@ F_EXCEPTION
Definition: fundamentals.h:233
@ V_SERVER_STATUS
Definition: fundamentals.h:102
@ S_SIGNOFF
Definition: fundamentals.h:170
@ E_TYPE_DISALLOWED
Type not allowed with expression.
Definition: fundamentals.h:205
@ S_ANSWER_NO
Definition: fundamentals.h:166
@ E_RANGE
Request puts value out of range.
Definition: fundamentals.h:200
@ I_INFO
Definition: fundamentals.h:126
@ A_SOURCE_BORROW
Definition: fundamentals.h:258
@ S_PARTIAL
Command partially succeeded, but there were failures.
Definition: fundamentals.h:174
@ V_USERACTION
Definition: fundamentals.h:101
@ E_NOTFOUND
Definition: fundamentals.h:189
@ A_RESUMED
Definition: fundamentals.h:246
@ A_KICKED
Definition: fundamentals.h:241
@ V_SELECTEDSOURCE
Definition: fundamentals.h:91
@ I_STATISTICS_FAILURES
Definition: fundamentals.h:154
@ V_PLAYING
Definition: fundamentals.h:81
@ V_MIX_CHANGED
Definition: fundamentals.h:94
@ A_SIGNED_OUT
Definition: fundamentals.h:240
@ I_DURATION
Definition: fundamentals.h:124
@ E_MEDIA_TRANSIENT
Transient playlist.
Definition: fundamentals.h:219
@ S_ROUNDING
Success but with rounding.
Definition: fundamentals.h:172
@ S_ANSWER_YES
Definition: fundamentals.h:165
@ E_LOGINREQUIRED
Command/feature requires user be logged in.
Definition: fundamentals.h:197
@ I_ATTACHED_SONG
Transmit the essentials of the attached song (but not ratings, etc).
Definition: fundamentals.h:160
@ A_REQUEST_CANCEL
Definition: fundamentals.h:262
@ S_OK
Definition: fundamentals.h:164
@ E_UNAUTHORIZED
Definition: fundamentals.h:186
@ I_PLAYLIST_TIMEOUT
Definition: fundamentals.h:134
@ A_DELETED_PLAYLIST
Definition: fundamentals.h:256
@ F_FAILURE
Definition: fundamentals.h:224
@ I_ROOM
Definition: fundamentals.h:135
@ E_MEDIA_ACTION
Source doesn't do that.
Definition: fundamentals.h:215
@ V_SOURCES_CHANGED
Definition: fundamentals.h:97
@ E_REQUESTPENDING
Request couldn't be completed now, we'll try again later.
Definition: fundamentals.h:195
@ E_AMBIGUOUS
Ambiguous expression.
Definition: fundamentals.h:204
@ FUTURE_CATEGORY
Definition: fundamentals.h:264
@ E_PERSISTENT
Require persistent data.
Definition: fundamentals.h:203
@ I_WELCOME
Definition: fundamentals.h:108
@ I_OWNER
Definition: fundamentals.h:120
@ I_VOLUME
Definition: fundamentals.h:129
@ I_YEAR
Definition: fundamentals.h:123
@ A_SHUTDOWN
Definition: fundamentals.h:263
@ S_DATA_END
Definition: fundamentals.h:169
@ E_PARTIAL
Partial failure, but a portion succeeded.
Definition: fundamentals.h:206
@ I_ALBUM
Definition: fundamentals.h:110
@ A_ADJUSTAUDIO
Definition: fundamentals.h:252
@ I_SERVICE_PASSWORD
Definition: fundamentals.h:141
@ V_PLAYLISTS_CHANGED
Definition: fundamentals.h:95
@ I_ACTIONS
Definition: fundamentals.h:125
@ F_INCOMPLETE
Definition: fundamentals.h:231
bool isCommandError(RESPONSE_CODE code)
Definition: fundamentals.h:279
bool isStatusChange(RESPONSE_CODE code)
Definition: fundamentals.h:267
Audio output device & driver parameters.
Definition: fundamentals.h:52
float crossfade_level
Definition: fundamentals.h:69
std::string output_server
For output to network services such as IceCast, the target server info.
Definition: fundamentals.h:65
std::string output_driver
Specify output driver, for use by audio output library.
Definition: fundamentals.h:56
std::string output_id
For use by audio output library. Numeric but stored as string to accommodate unset value.
Definition: fundamentals.h:61
std::string output_device
Specify a specific output device, if there are multiple instances or channels.
Definition: fundamentals.h:59
std::string output_options
For use by audio output library.
Definition: fundamentals.h:63
std::string output_library
Specify which output library for pianod to use. If empty, uses default.
Definition: fundamentals.h:54
float preroll_time
Definition: fundamentals.h:73
float crossfade_time
Definition: fundamentals.h:71
int volume
Initial volume level, managed by pianod.
Definition: fundamentals.h:67