Changeset 498:0c066d1a1842 in roaraudio
- Timestamp:
- 08/14/08 06:06:02 (16 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
include/roaraudio/proto.h
r465 r498 50 50 51 51 52 #define ROAR_CMD_OK_STOP 253 52 53 #define ROAR_CMD_OK 254 /* return value OK */ 53 54 #define ROAR_CMD_ERROR 255 /* return value ERROR */ -
roard/clients.c
r439 r498 130 130 } 131 131 132 #define MAX_STREAMLESS 8 133 132 134 int clients_check_all (void) { 133 135 struct timeval tv; … … 138 140 int max_fh = -1; 139 141 int have = 0; 142 struct { 143 int id; 144 int fh; 145 } streamless[MAX_STREAMLESS]; 146 int have_streamless = 0; 147 int have_stream; 140 148 141 149 FD_ZERO(&r); … … 158 166 max_fh = fh; 159 167 } 168 169 have_stream = 0; 160 170 161 171 for (j = 0; j < ROAR_CLIENTS_MAX_STREAMS_PER_CLIENT; j++) { … … 165 175 if ( fh > max_fh ) 166 176 max_fh = fh; 177 178 have_stream = 1; 167 179 } 168 180 //printf("D: client=%i, stream=%i, fh=%i\n", i, j, fh); 169 181 } 170 182 183 if ( !have_stream && have_streamless < MAX_STREAMLESS ) { 184 streamless[have_streamless ].id = i; 185 if ( (streamless[have_streamless++].fh = g_clients[i]->fh) == -1 ) 186 have_streamless--; 187 } 171 188 } 172 189 … … 214 231 } 215 232 233 if ( have_streamless ) { 234 FD_ZERO(&r); 235 236 tv.tv_sec = 0; 237 tv.tv_usec = 1; 238 239 max_fh = -1; 240 241 for (i = 0; i < have_streamless; i++) { 242 fh = streamless[i].fh; 243 244 ROAR_DBG("clients_check_all(void): fh=%i", fh); 245 FD_SET(fh, &r); 246 247 if ( fh > max_fh ) 248 max_fh = fh; 249 } 250 251 if ( (ret = select(max_fh + 1, &r, NULL, NULL, &tv)) < 0 ) { 252 return ret; 253 } 254 255 for (i = 0; i < have_streamless; i++) { 256 if ( FD_ISSET(streamless[i].fh, &r) ) { 257 clients_check(streamless[i].id); 258 } 259 } 260 } 261 216 262 ROAR_DBG("clients_check_all(void) = %i // have value", have); 217 263 return have; … … 224 270 int oldcmd; 225 271 int r; 272 int rv = 0; 226 273 227 274 if ( g_clients[id] == NULL ) … … 251 298 m.cmd = ROAR_CMD_OK; 252 299 m.datalen = 0; 300 } else if ( m.cmd == ROAR_CMD_OK_STOP ) { 301 m.cmd = ROAR_CMD_OK; 302 rv = 1; 253 303 } 254 304 } … … 260 310 261 311 ROAR_DBG("clients_check(id=%i) = 0", id); 262 return 0;312 return rv; 263 313 } 264 314 -
roard/req.c
r496 r498 591 591 } 592 592 593 mes->cmd = ROAR_CMD_OK ;593 mes->cmd = ROAR_CMD_OK_STOP; 594 594 mes->datalen = 0; 595 595
Note: See TracChangeset
for help on using the changeset viewer.