Changeset 92:2d61884489be in roaraudio


Ignore:
Timestamp:
07/13/08 01:19:24 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added support to set meta data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/req.c

    r84 r92  
    135135 
    136136int req_on_set_meta    (int client, struct roar_message * mes, char * data) { 
     137 int type; 
     138 int mode; 
     139 int namelen, vallen; 
     140 char   val[1024+1]; 
     141 char   name[ROAR_META_MAX_NAMELEN+1]; 
     142 
     143 if ( mes->datalen < 3 ) 
     144  return -1; 
     145 
     146 if ( mes->data[0] != 0 ) // version 
     147  return -1; 
     148 
     149 mode = (unsigned) mes->data[1]; 
     150 type = (unsigned) mes->data[2]; 
     151 
     152 if ( mode == ROAR_META_MODE_CLEAR ) { 
     153  stream_meta_clear(mes->stream); 
     154  mes->datalen = 0; 
     155  mes->cmd     = ROAR_CMD_OK; 
     156  return 0; 
     157 } else if ( mode == ROAR_META_MODE_DELETE ) { // unsuppoerted at the moment 
     158 } else if ( mode == ROAR_META_MODE_SET || mode == ROAR_META_MODE_ADD ) { 
     159  if ( mes->datalen < 5 ) 
     160   return -1; 
     161 
     162  namelen = (unsigned) mes->data[3]; 
     163  vallen  = (unsigned) mes->data[4]; 
     164 
     165  if ( mes->datalen < (5 + namelen + vallen) ) 
     166   return -1; 
     167 
     168  if ( namelen > ROAR_META_MAX_NAMELEN ) 
     169   return -1; 
     170 
     171  strncpy(name, &(mes->data[5]), namelen); 
     172  name[namelen] = 0; 
     173 
     174  if ( vallen > 1024 ) 
     175   return -1; 
     176 
     177  strncpy(val, &(mes->data[5+namelen]), vallen); 
     178  val[vallen] = 0; 
     179 
     180  if ( mode == ROAR_META_MODE_SET ) { 
     181   if ( stream_meta_set(mes->stream, type, name, val) == -1 ) 
     182    return -1; 
     183  } else { 
     184   if ( stream_meta_add(mes->stream, type, name, val) == -1 ) 
     185    return -1; 
     186  } 
     187 
     188  mes->datalen = 0; 
     189  mes->cmd     = ROAR_CMD_OK; 
     190  return 0; 
     191 } else { // unknown mode! 
     192  return -1; 
     193 } 
     194 
    137195 return -1; 
    138196} 
Note: See TracChangeset for help on using the changeset viewer.