X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmiracle%2Fmiracle_connection.c;fp=src%2Fmiracle%2Fmiracle_connection.c;h=6bf496cfcbdbd8165ef72a56aec5bd38f44a197e;hb=8cf0f77981284b7549c811b67283eb73d0c520d6;hp=82a5b5913233ece076f3a6c4897396b09e0c4ea8;hpb=d5132b032c1fe4b26b785eddf4789702a44c3bca;p=melted diff --git a/src/miracle/miracle_connection.c b/src/miracle/miracle_connection.c index 82a5b59..6bf496c 100644 --- a/src/miracle/miracle_connection.c +++ b/src/miracle/miracle_connection.c @@ -223,7 +223,35 @@ void *parser_thread( void *arg ) while( !error && connection_read( fd, command, 1024 ) ) { - if ( strncmp( command, "STATUS", 6 ) ) + if ( !strncmp( command, "PUSH ", 5 ) ) + { + char temp[ 20 ]; + int bytes; + char *buffer = NULL; + int total = 0; + mlt_service service = NULL; + + connection_read( fd, temp, 20 ); + bytes = atoi( temp ); + buffer = malloc( bytes + 1 ); + while ( total < bytes ) + { + int count = read( fd, buffer + total, bytes - total ); + if ( count >= 0 ) + total += count; + else + break; + } + buffer[ bytes ] = '\0'; + if ( bytes > 0 && total == bytes ) + service = ( mlt_service )mlt_factory_producer( "westley-xml", buffer ); + response = valerie_parser_push( parser, command, service ); + error = connection_send( fd, response ); + valerie_response_close( response ); + mlt_service_close( service ); + free( buffer ); + } + else if ( strncmp( command, "STATUS", 6 ) ) { response = valerie_parser_execute( parser, command ); miracle_log( LOG_INFO, "%s \"%s\" %d", address, command, valerie_response_get_error_code( response ) );