46 |
char *pszToken; |
char *pszToken; |
47 |
char *pch; |
char *pch; |
48 |
int cchToken; |
int cchToken; |
49 |
lscp_event_t event = LSCP_EVENT_NONE; |
lscp_event_t event; |
50 |
|
|
51 |
#ifdef DEBUG |
#ifdef DEBUG |
52 |
fprintf(stderr, "_lscp_client_evt_proc: Client waiting for events.\n"); |
fprintf(stderr, "_lscp_client_evt_proc: Client waiting for events.\n"); |
62 |
pszToken = lscp_strtok(achBuffer, pszSeps, &(pch)); // Have "NOTIFY". |
pszToken = lscp_strtok(achBuffer, pszSeps, &(pch)); // Have "NOTIFY". |
63 |
if (strcasecmp(pszToken, "NOTIFY") == 0) { |
if (strcasecmp(pszToken, "NOTIFY") == 0) { |
64 |
pszToken = lscp_strtok(NULL, pszSeps, &(pch)); |
pszToken = lscp_strtok(NULL, pszSeps, &(pch)); |
65 |
if (strcasecmp(pszToken, "CHANNELS") == 0) |
event = lscp_event_from_text(pszToken); |
|
event = LSCP_EVENT_CHANNELS; |
|
|
else if (strcasecmp(pszToken, "VOICE_COUNT") == 0) |
|
|
event = LSCP_EVENT_VOICE_COUNT; |
|
|
else if (strcasecmp(pszToken, "STREAM_COUNT") == 0) |
|
|
event = LSCP_EVENT_STREAM_COUNT; |
|
|
else if (strcasecmp(pszToken, "BUFFER_FILL") == 0) |
|
|
event = LSCP_EVENT_BUFFER_FILL; |
|
|
else if (strcasecmp(pszToken, "CHANNEL_INFO") == 0) |
|
|
event = LSCP_EVENT_CHANNEL_INFO; |
|
|
else if (strcasecmp(pszToken, "MISCELLANEOUS") == 0) |
|
|
event = LSCP_EVENT_MISCELLANEOUS; |
|
66 |
// And pick the rest of data... |
// And pick the rest of data... |
67 |
pszToken = lscp_strtok(NULL, pszSeps, &(pch)); |
pszToken = lscp_strtok(NULL, pszSeps, &(pch)); |
68 |
cchToken = (pszToken == NULL ? 0 : strlen(pszToken)); |
cchToken = (pszToken == NULL ? 0 : strlen(pszToken)); |
142 |
// Subscribe to a single event. |
// Subscribe to a single event. |
143 |
static lscp_status_t _lscp_client_evt_request ( lscp_client_t *pClient, int iSubscribe, lscp_event_t event ) |
static lscp_status_t _lscp_client_evt_request ( lscp_client_t *pClient, int iSubscribe, lscp_event_t event ) |
144 |
{ |
{ |
145 |
char *pszEvent; |
const char *pszEvent; |
146 |
char szQuery[LSCP_BUFSIZ]; |
char szQuery[LSCP_BUFSIZ]; |
147 |
int cchQuery; |
int cchQuery; |
148 |
|
|
150 |
return LSCP_FAILED; |
return LSCP_FAILED; |
151 |
|
|
152 |
// Which (single) event? |
// Which (single) event? |
153 |
switch (event) { |
pszEvent = lscp_event_to_text(event); |
154 |
case LSCP_EVENT_CHANNELS: |
if (pszEvent == NULL) |
|
pszEvent = "CHANNELS"; |
|
|
break; |
|
|
case LSCP_EVENT_VOICE_COUNT: |
|
|
pszEvent = "VOICE_COUNT"; |
|
|
break; |
|
|
case LSCP_EVENT_STREAM_COUNT: |
|
|
pszEvent = "STREAM_COUNT"; |
|
|
break; |
|
|
case LSCP_EVENT_BUFFER_FILL: |
|
|
pszEvent = "BUFFER_FILL"; |
|
|
break; |
|
|
case LSCP_EVENT_CHANNEL_INFO: |
|
|
pszEvent = "CHANNEL_INFO"; |
|
|
break; |
|
|
case LSCP_EVENT_MISCELLANEOUS: |
|
|
pszEvent = "CHANNEL_INFO"; |
|
|
break; |
|
|
default: |
|
155 |
return LSCP_FAILED; |
return LSCP_FAILED; |
156 |
} |
|
|
|
|
157 |
// Build the query string... |
// Build the query string... |
158 |
cchQuery = sprintf(szQuery, "%sSUBSCRIBE %s\n\n", (iSubscribe == 0 ? "UN" : ""), pszEvent); |
cchQuery = sprintf(szQuery, "%sSUBSCRIBE %s\n\n", (iSubscribe == 0 ? "UN" : ""), pszEvent); |
159 |
// Just send data, forget result... |
// Just send data, forget result... |
292 |
pClient->channels = NULL; |
pClient->channels = NULL; |
293 |
lscp_driver_info_init(&(pClient->audio_info)); |
lscp_driver_info_init(&(pClient->audio_info)); |
294 |
lscp_driver_info_init(&(pClient->midi_info)); |
lscp_driver_info_init(&(pClient->midi_info)); |
295 |
|
lscp_param_info_init(&(pClient->audio_param_info)); |
296 |
|
lscp_param_info_init(&(pClient->midi_param_info)); |
297 |
lscp_engine_info_init(&(pClient->engine_info)); |
lscp_engine_info_init(&(pClient->engine_info)); |
298 |
lscp_channel_info_init(&(pClient->channel_info)); |
lscp_channel_info_init(&(pClient->channel_info)); |
299 |
// Initialize error stuff. |
// Initialize error stuff. |
356 |
// Free up all cached members. |
// Free up all cached members. |
357 |
lscp_channel_info_reset(&(pClient->channel_info)); |
lscp_channel_info_reset(&(pClient->channel_info)); |
358 |
lscp_engine_info_reset(&(pClient->engine_info)); |
lscp_engine_info_reset(&(pClient->engine_info)); |
359 |
|
lscp_param_info_reset(&(pClient->midi_param_info)); |
360 |
|
lscp_param_info_reset(&(pClient->audio_param_info)); |
361 |
lscp_driver_info_reset(&(pClient->midi_info)); |
lscp_driver_info_reset(&(pClient->midi_info)); |
362 |
lscp_driver_info_reset(&(pClient->audio_info)); |
lscp_driver_info_reset(&(pClient->audio_info)); |
363 |
// Free available engine table. |
// Free available engine table. |