Ignore:
Timestamp:
11/09/12 01:09:22 (11 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

commit 0: make protocol emulations for esd, gopher and rplay more independed so they can be moved into plugins easily (See: #311)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • plugins/roard/protocol-rplay.c

    r5640 r5739  
    2828#ifndef ROAR_WITHOUT_DCOMP_EMUL_RPLAY 
    2929 
    30 struct emul_rplay_command emul_rplay_commands[] = { 
     30struct emul_rplay_command { 
     31 const char * name; 
     32 const char * usage; 
     33 ssize_t      min_args; 
     34 ssize_t      max_args; 
     35 int (*handler)(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     36}; 
     37 
     38static int emul_rplay_exec_command  (int client, struct roar_vio_calls * vio, char * command); 
     39 
     40static int emul_rplay_send_error    (int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen, const char * msg); 
     41 
     42static int emul_rplay_on_status(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     43static int emul_rplay_on_quit(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     44static int emul_rplay_on_help(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     45 
     46// things we need to implent soon: 
     47static int emul_rplay_on_play(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     48static int emul_rplay_on_put(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     49//static int emul_rplay_on_set(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     50//static int emul_rplay_on_modify(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     51static int emul_rplay_on_pause(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     52static int emul_rplay_on_continue(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     53//static int emul_rplay_on_stop(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     54 
     55static struct emul_rplay_command emul_rplay_commands[] = { 
    3156 {"access",      NULL, -1, -1, NULL}, 
    3257 {"application", NULL,  1, -1, NULL}, 
     
    111136} 
    112137 
    113 int emul_rplay_check_client  (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) { 
    114  struct roar_vio_calls calls; 
     138static int emul_rplay_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) { 
     139 if ( emul_rplay_on_status(client, NULL, vio, NULL, 0) == -1 ) 
     140  return -1; 
     141 
     142 return 0; 
     143} 
     144 
     145static int emul_rplay_check_client  (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) { 
    115146 char buf[1024]; 
    116147 ssize_t len; 
     
    119150  return -1; 
    120151 
    121  if ( vio == NULL ) { 
    122   vio = &calls; 
    123   if ( roar_vio_open_fh_socket(vio, clients_get_fh(client)) == -1 ) 
    124    return -1; 
    125  } 
    126  
    127152 if ( (len = roar_vio_read(vio, buf, sizeof(buf)-1)) <= 0 ) { 
    128153  // really bad protocol error 
    129   clients_delete(client); 
    130154  return -1; 
    131155 } 
     
    256280 
    257281 
    258 int emul_rplay_on_quit(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
    259  clients_delete(client); 
     282static int emul_rplay_on_quit(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
    260283 return -1; 
    261284} 
    262285 
    263 int emul_rplay_on_help(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
     286static int emul_rplay_on_help(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
    264287 struct emul_rplay_command * c; 
    265288 
     
    276299 
    277300 
    278 int emul_rplay_on_play(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
     301static int emul_rplay_on_play(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
    279302 struct roar_keyval        * kvr, * rate, * bits, * channels, * format, * byteorder; 
    280303 struct roar_audio_info      info; 
     
    370393} 
    371394 
    372 int emul_rplay_on_put(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
     395static int emul_rplay_on_put(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
    373396 struct roar_keyval * kvr; 
    374397 int stream; 
     
    418441} 
    419442 
    420 int emul_rplay_on_set(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
    421 int emul_rplay_on_modify(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
    422  
    423 int emul_rplay_on_pause(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
     443//static int emul_rplay_on_set(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     444//static int emul_rplay_on_modify(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     445 
     446static int emul_rplay_on_pause(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
    424447 struct roar_keyval * kvr; 
    425448 int stream; 
     
    450473} 
    451474 
    452 int emul_rplay_on_continue(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
     475static int emul_rplay_on_continue(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen) { 
    453476 struct roar_keyval * kvr; 
    454477 int stream; 
     
    479502} 
    480503 
    481 int emul_rplay_on_stop(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     504//static int emul_rplay_on_stop(int client, struct emul_rplay_command * cmd, struct roar_vio_calls * vio, struct roar_keyval * kv, size_t kvlen); 
     505 
     506struct roar_dl_proto __proto_common_rplay = { 
     507 .proto = ROAR_PROTO_RPLAY, 
     508 .description = "RPlay emulation", 
     509 .flags = ROAR_DL_PROTO_FLAGS_NONE, 
     510 .set_proto = emul_rplay_set_proto, 
     511 .handle = emul_rplay_check_client 
     512}; 
    482513 
    483514#endif 
Note: See TracChangeset for help on using the changeset viewer.