Changeset 71:6426d93defd0 in roaraudio


Ignore:
Timestamp:
07/12/08 15:07:26 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added support to quit the server if all clients are gone and we are in --no-listen mode

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • libroar/socket.c

    r70 r71  
    167167  snprintf(fhstr, 7, "%i", socks[1]); 
    168168 
    169   execlp("roard", "roard", "--no-listen", "--client-fh", fhstr, NULL); 
     169  execlp("roard", "roard", "--terminate", "--no-listen", "--client-fh", fhstr, NULL); 
    170170 
    171171  // we are still alive? 
  • roard/clients.c

    r66 r71  
    115115 int fh; 
    116116 int max_fh = -1; 
     117 int have = 0; 
    117118 
    118119 FD_ZERO(&r); 
     
    127128 
    128129  if ( (fh = g_clients[i]->fh) != -1 ) { 
     130   have++; 
     131 
    129132   FD_SET(fh, &r); 
    130133   FD_SET(fh, &e); 
     
    147150 
    148151 if ( (ret = select(max_fh + 1, &r, NULL, &e, &tv)) < 1 ) { 
    149   return ret; 
     152  return ret < 0 ? ret : have; 
    150153 } 
    151154 
     
    155158 
    156159  if ( (fh = g_clients[i]->fh) != -1 ) { 
    157  
    158160   if ( FD_ISSET(fh, &r) ) { 
    159161    if ( g_clients[i]->execed == -1 ) { 
     
    177179 } 
    178180 
    179  return 0; 
     181 ROAR_DBG("clients_check_all(void) = %i // have value", have); 
     182 return have; 
    180183} 
    181184 
  • roard/include/roard.h

    r40 r71  
    3434int g_self_client; 
    3535 
     36int g_terminate; 
     37 
    3638struct roar_audio_info * g_sa; 
    3739 
  • roard/loop.c

    r68 r71  
    3131 
    3232  ROAR_DBG("main_loop(*): check for new data..."); 
    33   clients_check_all(); 
     33  if ( clients_check_all() == 0 && g_terminate && g_listen_socket == -1 ) 
     34   alive = 0; 
    3435 
    3536  ROAR_DBG("main_loop(*): mixing clients..."); 
  • roard/roard.c

    r68 r71  
    1010 printf("Misc Options:\n\n"); 
    1111 printf( 
    12         " --demon               - bring the server into background after init\n" 
     12        " --demon               - Bring the server into background after init\n" 
     13        " --terminate           - Terminate after last client quited\n" 
    1314       ); 
    1415 
     
    120121  } else if ( strcmp(k, "--demon") == 0 ) { 
    121122   demon = 1; 
     123  } else if ( strcmp(k, "--terminate") == 0 ) { 
     124   g_terminate = 1; 
    122125 
    123126  } else if ( strcmp(k, "-R") == 0 || strcmp(k, "--rate") == 0 ) { 
Note: See TracChangeset for help on using the changeset viewer.