Changeset 5606:f7617b41972e in roaraudio


Ignore:
Timestamp:
07/31/12 02:33:55 (12 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

Updated common protocol interface (Closes: #257, #256)

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • ChangeLog

    r5604 r5606  
    1717        * Added roar_buffer_moveintoqueue() (Closes: #283) (pr1) 
    1818        * Typo corrections (Closes: #282) (pr1) 
     19        * Updated common protocol interface (Closes: #257, #256) (pr1) 
    1920 
    2021v. 1.0beta3 - Sun Jul 15 2012 26:08 CEST 
  • include/libroar/roardl.h

    r5582 r5606  
    332332   struct roar_dl_lhandle * lhandle  // The registering handle. 
    333333                                     // This is valid until the object is unregistered. 
    334                                      // Only roar_dl_context_restore() and roar_dl_context_store() 
    335                                      // may be used on this object. Result of all other functions 
    336                                      // is undefined. 
     334                                     // Only roar_dl_context_restore(), roar_dl_context_store() 
     335                                     // and roar_dl_getpara() may be used on this object. 
     336                                     // Result of all other functions is undefined. 
    337337 ); 
    338338 void * userdata; // The user data pointer passed to the callback. 
     
    350350 const char * description; 
    351351 const int flags; 
    352  int (*set_proto)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen); 
    353  int (*unset_proto)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen); 
    354  int (*handle)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen); 
    355  int (*flush)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen); 
    356  int (*flushed)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen); 
    357  int (*status)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen); 
     352 int (*set_proto)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara); 
     353 int (*unset_proto)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara); 
     354 int (*handle)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara); 
     355 int (*flush)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara); 
     356 int (*flushed)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara); 
     357 int (*status)(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara); 
    358358}; 
    359359 
  • plugins/universal/protocol-daytime.c

    r5605 r5606  
    2626#include <roaraudio.h> 
    2727 
    28 static int _set_proto(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen) { 
     28static int _set_proto(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara) { 
    2929 struct roar_buffer * buf; 
    3030 void * data; 
     
    3333 char * date = asctime(gmtime(&now)); 
    3434 
    35  (void)client, (void)vio, (void)userdata, (void)para, (void)paralen; 
     35 (void)client, (void)vio, (void)userdata, (void)protopara, (void)protoparalen, (void)pluginpara; 
    3636 
    3737 len = roar_mm_strlen(date) + 1; 
     
    4848} 
    4949 
    50 static int _flushed(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen) { 
    51  (void)client, (void)vio, (void)obuffer, (void)userdata, (void)para, (void)paralen; 
     50static int _flushed(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara) { 
     51 (void)client, (void)vio, (void)obuffer, (void)userdata, (void)protopara, (void)protoparalen, (void)pluginpara; 
    5252 
    5353 roar_err_set(ROAR_ERROR_NODATA); 
  • plugins/universal/protocol-discard.c

    r5605 r5606  
    2626#include <roaraudio.h> 
    2727 
    28 static int _handle(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen) { 
     28static int _handle(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara) { 
    2929 char buf[4096]; 
    3030 
    31  (void)client, (void)obuffer, (void)userdata, (void)para, (void)paralen; 
     31 (void)client, (void)obuffer, (void)userdata, (void)protopara, (void)protoparalen, (void)pluginpara; 
    3232 
    3333 if ( roar_vio_read(vio, buf, sizeof(buf)) < 1 ) { 
  • plugins/universal/protocol-echo.c

    r5605 r5606  
    2626#include <roaraudio.h> 
    2727 
    28 static int _handle(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen) { 
     28static int _handle(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara) { 
    2929 struct roar_buffer * buf; 
    3030 void * data; 
    3131 ssize_t len; 
    3232 
    33  (void)client, (void)userdata, (void)para, (void)paralen; 
     33 (void)client, (void)userdata, (void)protopara, (void)protoparalen, (void)pluginpara; 
    3434 
    3535 ROAR_DBG("_handle(client=%i, vio=%p) = ?", client, vio); 
  • plugins/universal/tic-tac-toe.c

    r5603 r5606  
    253253} 
    254254 
    255 static int _set_proto(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen) { 
     255static int _set_proto(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara) { 
    256256 game_state * state; 
    257257 
    258  (void)client, (void)vio, (void)obuffer, (void)para, (void)paralen; 
     258 (void)client, (void)vio, (void)obuffer, (void)protopara, (void)protoparalen, (void)pluginpara; 
    259259 
    260260 state = roar_mm_malloc(sizeof(game_state)); 
     
    301301} 
    302302 
    303 static int _handle(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * para, ssize_t paralen) { 
     303static int _handle(int client, struct roar_vio_calls * vio, struct roar_buffer ** obuffer, void ** userdata, const struct roar_keyval * protopara, ssize_t protoparalen, struct roar_dl_librarypara * pluginpara) { 
    304304 char buf[32]; 
    305305 ssize_t len; 
     
    310310 char c; 
    311311 
    312  (void)client, (void)obuffer, (void)para, (void)paralen; 
     312 (void)client, (void)obuffer, (void)protopara, (void)protoparalen, (void)pluginpara; 
    313313 
    314314 ROAR_DBG("check_client(client=%i, vio=%p) = ?", client, vio); 
  • roard/clients.c

    r5590 r5606  
    143143                         struct roard_listen * lsock, struct sockaddr * sockaddr, socklen_t addrlen) { 
    144144 const struct roard_proto_handle * protohandle; 
     145 struct roar_dl_librarypara * pluginpara; 
    145146 struct roar_vio_calls    vio; 
    146147 struct roar_client_server * cs; 
     
    287288        supported = 1; 
    288289        if ( protohandle->impl.common->set_proto != NULL ) { 
    289          if ( protohandle->impl.common->set_proto(client, &vio, &(cs->outbuf), &(cs->protoinst), protohandle->para, protohandle->paralen) == -1 ) { 
     290         pluginpara = roar_dl_getpara(protohandle->lhandle); // will return NULL in case protohandle->lhandle is NULL. 
     291         if ( protohandle->impl.common->set_proto(client, &vio, &(cs->outbuf), &(cs->protoinst), protohandle->para, protohandle->paralen, pluginpara) == -1 ) { 
    290292          supported = 0; 
    291293         } 
     294         if ( pluginpara != NULL ) 
     295          roar_dl_para_unref(pluginpara); 
    292296        } 
    293297       break; 
     
    312316 struct roar_client_server * cs; 
    313317 const struct roard_proto_handle * proto; 
     318 struct roar_dl_librarypara * pluginpara; 
    314319 struct roar_vio_calls vio; 
    315320 int i; 
     
    337342     if ( proto->impl.common->unset_proto != NULL ) { 
    338343      roar_vio_open_fh_socket(&vio, clients_get_fh(id)); 
    339       proto->impl.common->unset_proto(id, &vio, &(cs->outbuf), &(cs->protoinst), proto->para, proto->paralen); 
     344      pluginpara = roar_dl_getpara(proto->lhandle); // will return NULL in case protohandle->lhandle is NULL. 
     345      proto->impl.common->unset_proto(id, &vio, &(cs->outbuf), &(cs->protoinst), proto->para, proto->paralen, pluginpara); 
     346      if ( pluginpara != NULL ) 
     347       roar_dl_para_unref(pluginpara); 
    340348     } 
    341349    break; 
     
    723731 struct roar_error_state errstate; 
    724732 const struct roard_proto_handle * proto; 
     733 struct roar_dl_librarypara * pluginpara; 
    725734 int command_error; 
    726735 char * data = NULL; 
     
    834843       break; 
    835844      case ROARD_PROTO_TYPE_COMMON: 
    836         if ( proto->impl.common->handle != NULL ) 
    837          rv = proto->impl.common->handle(id, &vio, &(cs->outbuf), &(cs->protoinst), proto->para, proto->paralen); 
     845        if ( proto->impl.common->handle != NULL ) { 
     846         pluginpara = roar_dl_getpara(proto->lhandle); // will return NULL in case protohandle->lhandle is NULL. 
     847         rv = proto->impl.common->handle(id, &vio, &(cs->outbuf), &(cs->protoinst), proto->para, proto->paralen, pluginpara); 
     848         if ( pluginpara != NULL ) 
     849          roar_dl_para_unref(pluginpara); 
     850        } 
    838851        if ( rv == -1 ) 
    839852         rv = clients_delete(id); 
     
    858871 struct roar_client              * c; 
    859872 const struct roard_proto_handle * p; 
     873 struct roar_dl_librarypara * pluginpara; 
    860874 size_t len; 
    861875 ssize_t ret; 
     
    892906     if ( p->lhandle != NULL ) 
    893907      roar_dl_context_restore(p->lhandle); 
    894      rv = p->impl.common->flush(id, &vio, &(cs->outbuf), &(cs->protoinst), p->para, p->paralen); 
     908     pluginpara = roar_dl_getpara(p->lhandle); // will return NULL in case protohandle->lhandle is NULL. 
     909     rv = p->impl.common->flush(id, &vio, &(cs->outbuf), &(cs->protoinst), p->para, p->paralen, pluginpara); 
    895910     if ( p->lhandle != NULL ) 
    896911      roar_dl_context_store(p->lhandle); 
     912     if ( pluginpara != NULL ) 
     913      roar_dl_para_unref(pluginpara); 
    897914     if ( rv == -1 ) 
    898915      rv = clients_delete(id); 
     
    946963      if ( p->lhandle != NULL ) 
    947964       roar_dl_context_restore(p->lhandle); 
    948       rv = p->impl.common->flushed(id, &vio, &(cs->outbuf), &(cs->protoinst), p->para, p->paralen); 
     965      pluginpara = roar_dl_getpara(p->lhandle); // will return NULL in case protohandle->lhandle is NULL. 
     966      rv = p->impl.common->flushed(id, &vio, &(cs->outbuf), &(cs->protoinst), p->para, p->paralen, pluginpara); 
    949967      if ( p->lhandle != NULL ) 
    950968       roar_dl_context_store(p->lhandle); 
     969      if ( pluginpara != NULL ) 
     970       roar_dl_para_unref(pluginpara); 
    951971      if ( rv == -1 ) 
    952972       rv = clients_delete(id); 
Note: See TracChangeset for help on using the changeset viewer.