460b9539 |
1 | /* |
2 | * This file is part of DisOrder. |
3 | * Copyright (C) 2004, 2005, 2006 Richard Kettlewell |
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, but |
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | * General Public License for more details. |
14 | * |
15 | * You should have received a copy of the GNU General Public License |
16 | * along with this program; if not, write to the Free Software |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
18 | * USA |
19 | */ |
20 | |
21 | #ifndef CLIENT_H |
22 | #define CLIENT_H |
23 | |
24 | /* A simple synchronous client interface. */ |
25 | |
26 | typedef struct disorder_client disorder_client; |
27 | |
28 | struct queue_entry; |
29 | struct kvp; |
30 | struct sink; |
31 | |
32 | /* Parameter strings (e.g. @track@) are UTF-8 unless specified |
33 | * otherwise. */ |
34 | |
35 | disorder_client *disorder_new(int verbose); |
36 | /* create a new disorder_client */ |
37 | |
38 | int disorder_running(disorder_client *c); |
39 | /* return 1 if the server is running, else 0 */ |
40 | |
41 | int disorder_connect(disorder_client *c); |
42 | /* connect a disorder_client using the default settings */ |
43 | |
44 | int disorder_connect_sock(disorder_client *c, |
45 | const struct sockaddr *sa, |
46 | socklen_t len, |
47 | const char *username, |
48 | const char *password, |
49 | const char *ident); |
50 | /* connect a disorder_client */ |
51 | |
52 | int disorder_close(disorder_client *c); |
53 | /* close a disorder_client */ |
54 | |
55 | int disorder_become(disorder_client *c, const char *user); |
56 | /* become another user (trusted users only) */ |
57 | |
58 | int disorder_version(disorder_client *c, char **versionp); |
59 | /* get the server version */ |
60 | |
61 | int disorder_play(disorder_client *c, const char *track); |
62 | /* add a track to the queue */ |
63 | |
64 | int disorder_remove(disorder_client *c, const char *track); |
65 | /* remove a track from the queue */ |
66 | |
67 | int disorder_move(disorder_client *c, const char *track, int delta); |
68 | /* move a track in the queue @delta@ steps towards the head */ |
69 | |
70 | int disorder_enable(disorder_client *c); |
71 | /* enable playing if it is not already enabled */ |
72 | |
73 | int disorder_disable(disorder_client *c); |
74 | /* disable playing if it is not already disabled. */ |
75 | |
76 | int disorder_scratch(disorder_client *c, const char *id); |
77 | /* scratch the currently playing track. If @id@ is not a null pointer |
78 | * then the scratch will be ignored if the ID does not mactch. */ |
79 | |
80 | int disorder_shutdown(disorder_client *c); |
81 | /* shut down the server immediately */ |
82 | |
83 | int disorder_reconfigure(disorder_client *c); |
84 | /* re-read the configuration file */ |
85 | |
86 | int disorder_rescan(disorder_client *c); |
87 | /* initiate a rescan */ |
88 | |
89 | int disorder_playing(disorder_client *c, struct queue_entry **qp); |
90 | /* get the details of the currently playing track (null pointer if |
91 | * nothing playing). The first entry in the list is the next track to |
92 | * be played. */ |
93 | |
94 | int disorder_recent(disorder_client *c, struct queue_entry **qp); |
95 | /* get a list of recently played tracks. The LAST entry in the list |
96 | * is last track to have been played. */ |
97 | |
98 | int disorder_queue(disorder_client *c, struct queue_entry **qp); |
99 | /* get the queue */ |
100 | |
101 | int disorder_directories(disorder_client *c, const char *dir, const char *re, |
102 | char ***vecp, int *nvecp); |
103 | /* get subdirectories of @dir@, or of the root if @dir@ is an null |
104 | * pointer */ |
105 | |
106 | int disorder_files(disorder_client *c, const char *dir, const char *re, |
107 | char ***vecp, int *nvecp); |
108 | /* get list of files in @dir@ */ |
109 | |
110 | int disorder_allfiles(disorder_client *c, const char *dir, const char *re, |
111 | char ***vecp, int *nvecp); |
112 | /* get list of files and directories in @dir@ */ |
113 | |
114 | char *disorder_user(disorder_client *c); |
115 | /* remind ourselves what user we went in as */ |
116 | |
117 | int disorder_exists(disorder_client *c, const char *track, int *existsp); |
118 | /* set @*existsp@ to 1 if the track exists, else 0 */ |
119 | |
120 | int disorder_enabled(disorder_client *c, int *enabledp); |
121 | /* set @*enabledp@ to 1 if playing enabled, else 0 */ |
122 | |
123 | int disorder_set(disorder_client *c, const char *track, |
124 | const char *key, const char *value); |
125 | int disorder_unset(disorder_client *c, const char *track, |
126 | const char *key); |
127 | int disorder_get(disorder_client *c, const char *track, const char *key, |
128 | char **valuep); |
129 | int disorder_prefs(disorder_client *c, const char *track, |
130 | struct kvp **kp); |
131 | /* set, unset, get, list preferences */ |
132 | |
133 | int disorder_length(disorder_client *c, const char *track, |
134 | long *valuep); |
135 | /* get the length of a track in seconds, if it is known */ |
136 | |
137 | int disorder_search(disorder_client *c, const char *terms, |
138 | char ***vecp, int *nvecp); |
139 | /* get a list of tracks matching @words@ */ |
140 | |
141 | int disorder_random_enable(disorder_client *c); |
142 | /* enable random play if it is not already enabled */ |
143 | |
144 | int disorder_random_disable(disorder_client *c); |
145 | /* disable random play if it is not already disabled */ |
146 | |
147 | int disorder_random_enabled(disorder_client *c, int *enabledp); |
148 | /* determine whether random play is enabled */ |
149 | |
150 | int disorder_stats(disorder_client *c, |
151 | char ***vecp, int *nvecp); |
152 | /* get server statistics */ |
153 | |
154 | int disorder_set_volume(disorder_client *c, int left, int right); |
155 | int disorder_get_volume(disorder_client *c, int *left, int *right); |
156 | /* get or set the volume */ |
157 | |
158 | int disorder_log(disorder_client *c, struct sink *s); |
159 | /* send log output to @s@ */ |
160 | |
161 | int disorder_part(disorder_client *c, char **partp, |
162 | const char *track, const char *context, const char *part); |
163 | /* get a track name part */ |
164 | |
165 | int disorder_resolve(disorder_client *c, char **trackp, const char *track); |
166 | /* resolve a track name */ |
167 | |
168 | int disorder_pause(disorder_client *c); |
169 | /* Pause the currently playing track. */ |
170 | |
171 | int disorder_resume(disorder_client *c); |
172 | /* Resume after a pause. */ |
173 | |
174 | int disorder_tags(disorder_client *c, |
175 | char ***vecp, int *nvecp); |
176 | /* get known tags */ |
177 | |
178 | int disorder_set_global(disorder_client *c, |
179 | const char *key, const char *value); |
180 | int disorder_unset_global(disorder_client *c, const char *key); |
181 | int disorder_get_global(disorder_client *c, const char *key, char **valuep); |
182 | /* get/unset/set global prefs */ |
183 | |
184 | #endif /* CLIENT_H */ |
185 | |
186 | /* |
187 | Local Variables: |
188 | c-basic-offset:2 |
189 | comment-column:40 |
190 | End: |
191 | */ |