Changeset 4298:f36b7f925311 in roaraudio for roard/req.c


Ignore:
Timestamp:
09/03/10 17:38:05 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added support for large number of streams in LTM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/req.c

    r4291 r4298  
    2626#include "roard.h" 
    2727 
     28static void * _dataspace(struct roar_message * mes, char ** data, uint32_t flags[2], size_t len) { 
     29 if ( len <= LIBROAR_BUFFER_MSGDATA ) 
     30  return mes->data; 
     31 
     32 if ( *data != NULL ) 
     33  free(*data); 
     34 
     35 *data = malloc(len); 
     36 
     37 ROAR_DBG("_dataspace(mes=%p, data=%p, flags=%p, len=%llu): *data=%p", mes, data, flags, (long long unsigned int)len, *data); 
     38 
     39 if ( *data == NULL ) 
     40  return NULL; 
     41 
     42 flags[1] |= COMMAND_FLAG_OUT_LONGDATA; 
     43 
     44 return *data; 
     45} 
     46 
    2847int req_on_noop        (int client, struct roar_message * mes, char ** data, uint32_t flags[2]) { 
    2948 mes->cmd     = ROAR_CMD_OK; 
     
    815834    ROAR_DBG("req_on_get_stream_para(client=%i, ...): data size for answer is %i 64 bit sub-packets", client, (int)needed); 
    816835 
    817     if ( (needed*8) > LIBROAR_BUFFER_MSGDATA ) { 
    818      return -1; 
    819      if ( (d64 = malloc(needed*8)) == NULL ) 
    820       return -1; 
    821  
    822      *data = (char*)d64; 
    823     } 
    824  
    825     d64 = (int64_t*)mes->data; 
     836    ROAR_DBG("req_on_get_stream_para(client=%i, ...): mes->datalen=%i, data=%p{%p}", client, (int)mes->datalen, data, *data); 
     837    d64 = _dataspace(mes, data, flags, needed * 8); 
     838    ROAR_DBG("req_on_get_stream_para(client=%i, ...): d64=%p, data=%p{%p}", client, d64, data, *data); 
    826839 
    827840    if ( (d = roar_mm_malloc(mes->datalen)) == NULL ) 
    828841     return -1; 
    829842 
     843    ROAR_DBG("req_on_get_stream_para(client=%i, ...): d=%p, data=%p{%p}", client, d, data, *data); 
     844 
     845 
     846    ROAR_DBG("req_on_get_stream_para(client=%i, ...): mes->datalen=%i, data=%p{%p}", client, (int)mes->datalen, data, *data); 
     847    ROAR_DBG("req_on_get_stream_para(client=%i, ...): d64=%p, data=%p{%p}", client, d64, data, *data); 
    830848    memcpy(d, mes->data, mes->datalen); 
     849    ROAR_DBG("req_on_get_stream_para(client=%i, ...): d64=%p, data=%p{%p}", client, d64, data, *data); 
    831850 
    832851    d64ptr = d64; 
     852 
     853    ROAR_DBG("req_on_get_stream_para(client=%i, ...): mes->datalen=%i, data=%p{%p}", client, (int)mes->datalen, data, *data); 
     854    ROAR_DBG("req_on_get_stream_para(client=%i, ...): d64=%p, data=%p{%p}", client, d64, data, *data); 
    833855 
    834856    if ( mes->stream == -1 ) { 
    835857     for (i = 6; i < mes->datalen/2; i++) { 
     858      ROAR_DBG("req_on_get_stream_para(client=%i, ...): d64=%p, data=%p{%p}", client, d64, data, *data); 
     859 
    836860      if ( (ltm = streams_ltm_get(d[i], d[5], d[3])) == NULL ) 
    837861       return -1; 
     
    879903    } 
    880904 
     905    ROAR_DBG("req_on_get_stream_para(client=%i, ...): d64=%p, data=%p{%p}", client, d64, data, *data); 
     906 
    881907    roar_mm_free(d); 
    882908 
     
    888914    ROAR_DBG("req_on_get_stream_para(client=%i, ...): LTM d64=%p, d64ptr=%p", client, d64, d64ptr); 
    889915    ROAR_DBG("req_on_get_stream_para(client=%i, ...): LTM final message has %i byte of data", client, (int)mes->datalen); 
     916    ROAR_DBG("req_on_get_stream_para(client=%i, ...): d64=%p, data=%p{%p}", client, d64, data, *data); 
    890917    ROAR_DBG("req_on_get_stream_para(client=%i, ...): LTM GET_RAW request: OK. returning...", client); 
    891918   break; 
Note: See TracChangeset for help on using the changeset viewer.