Changeset 113:a032ff209b90 in roaraudio


Ignore:
Timestamp:
07/13/08 04:23:57 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added stream_meta_list() and done other support for listing meta tags on streams

Location:
roard
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • roard/commands.c

    r100 r113  
    1111  {ROAR_CMD_SET_META,     "SET_META",     req_on_set_meta}, 
    1212  {ROAR_CMD_GET_META,     "GET_META",     req_on_get_meta}, 
     13  {ROAR_CMD_LIST_META,    "LIST_META",    req_on_list_meta}, 
    1314 
    1415  {ROAR_CMD_EXEC_STREAM,  "EXEC_STREAM",  req_on_exec_stream}, 
  • roard/include/meta.h

    r90 r113  
    99int stream_meta_add   (int id, int type, char * name, char * val); 
    1010int stream_meta_get   (int id, int type, char * name, char * val, size_t len); 
     11int stream_meta_list  (int id, int * types, size_t len); 
    1112int stream_meta_clear (int id); 
    1213 
  • roard/include/req.h

    r100 r113  
    1717int req_on_set_meta    (int client, struct roar_message * mes, char * data); 
    1818int req_on_get_meta    (int client, struct roar_message * mes, char * data); 
     19int req_on_list_meta   (int client, struct roar_message * mes, char * data); 
    1920 
    2021int req_on_get_standby (int client, struct roar_message * mes, char * data); 
  • roard/meta.c

    r107 r113  
    7070     continue; 
    7171 
     72   if ( s->meta[i].value == NULL ) 
     73    return -1; 
     74 
    7275   if ( (vallen = strlen(s->meta[i].value)) > (len - 1) ) { 
    7376    ROAR_DBG("stream_meta_get(*): val too small: need %i have %i", vallen, len); 
     
    8386 
    8487 return -1; 
     88} 
     89 
     90int stream_meta_list  (int id, int * types, size_t len) { 
     91 int i, j; 
     92 int have = 0; 
     93 int found; 
     94 struct roar_stream_server * s = g_streams[id]; 
     95 
     96 if ( s == NULL ) 
     97  return -1; 
     98 
     99 if ( len < ROAR_META_MAX_PER_STREAM ) // TODO: find a way we do not need this 
     100  return -1; 
     101 
     102 types[0] = -1; 
     103 
     104 for (i = 0; i < ROAR_META_MAX_PER_STREAM; i++) { 
     105  found = 0; 
     106  for (j = 0; j < have; j++) 
     107   if ( types[j] == s->meta[i].type ) { 
     108    found = 1; 
     109    break; 
     110   } 
     111 
     112  if ( !found ) 
     113   types[have++] = s->meta[i].type; 
     114 } 
     115 
     116 return have; 
    85117} 
    86118 
  • roard/req.c

    r107 r113  
    231231} 
    232232 
     233int req_on_list_meta   (int client, struct roar_message * mes, char * data) { 
     234 int i; 
     235 int len = 0; 
     236 int types[ROAR_META_MAX_PER_STREAM]; 
     237 
     238 if ( mes->datalen != 1 ) 
     239  return -1; 
     240 
     241 if ( mes->data[0] != 0 ) // version 
     242  return -1; 
     243 
     244 if ( (len = stream_meta_list(mes->stream, types, ROAR_META_MAX_PER_STREAM)) == -1 ) 
     245  return -1; 
     246 
     247 mes->cmd     = ROAR_CMD_OK; 
     248 mes->datalen = 1 + len; 
     249 mes->data[0] = 0; 
     250 
     251 for (i = 0; i < len; i++) 
     252  mes->data[i+1] = types[i]; 
     253 
     254 return 0; 
     255} 
     256 
    233257int req_on_server_oinfo    (int client, struct roar_message * mes, char * data) { 
    234258 struct roar_stream s; 
Note: See TracChangeset for help on using the changeset viewer.