static valerie_response miracle_local_connect( miracle_local );
static valerie_response miracle_local_execute( miracle_local, char * );
static valerie_response miracle_local_push( miracle_local, char *, mlt_service );
+static valerie_response miracle_local_receive( miracle_local, char *, char * );
static void miracle_local_close( miracle_local );
response_codes miracle_help( command_argument arg );
response_codes miracle_run( command_argument arg );
parser->connect = (parser_connect)miracle_local_connect;
parser->execute = (parser_execute)miracle_local_execute;
parser->push = (parser_push)miracle_local_push;
+ parser->received = (parser_received)miracle_local_receive;
parser->close = (parser_close)miracle_local_close;
parser->real = local;
{"INSERT", miracle_insert, 1, ATYPE_STRING, "Insert a clip at the given clip index."},
{"REMOVE", miracle_remove, 1, ATYPE_NONE, "Remove a clip at the given clip index."},
{"CLEAN", miracle_clean, 1, ATYPE_NONE, "Clean a unit by removing all but the currently playing clip."},
+ {"WIPE", miracle_wipe, 1, ATYPE_NONE, "Clean a unit by removing everything before the currently playing clip."},
{"CLEAR", miracle_clear, 1, ATYPE_NONE, "Clear a unit by removing all clips."},
{"MOVE", miracle_move, 1, ATYPE_INT, "Move a clip to another clip index."},
{"APND", miracle_append, 1, ATYPE_STRING, "Append a clip specified in absolute filename argument."},
return cmd.response;
}
+static valerie_response miracle_local_receive( miracle_local local, char *command, char *doc )
+{
+ command_argument_t cmd;
+ cmd.parser = local->parser;
+ cmd.response = valerie_response_init( );
+ cmd.tokeniser = valerie_tokeniser_init( );
+ cmd.command = command;
+ cmd.unit = -1;
+ cmd.argument = NULL;
+ cmd.root_dir = local->root_dir;
+
+ /* Set the default error */
+ miracle_command_set_error( &cmd, RESPONSE_SUCCESS );
+
+ /* Parse the command */
+ if ( valerie_tokeniser_parse_new( cmd.tokeniser, command, " " ) > 0 )
+ {
+ int index = 0;
+ int position = 1;
+
+ /* Strip quotes from all tokens */
+ for ( index = 0; index < valerie_tokeniser_count( cmd.tokeniser ); index ++ )
+ valerie_util_strip( valerie_tokeniser_get_string( cmd.tokeniser, index ), '\"' );
+
+ cmd.unit = miracle_command_parse_unit( &cmd, position );
+ if ( cmd.unit == -1 )
+ miracle_command_set_error( &cmd, RESPONSE_MISSING_ARG );
+ position ++;
+
+ miracle_receive( &cmd, doc );
+ miracle_command_set_error( &cmd, RESPONSE_SUCCESS );
+
+ free( cmd.argument );
+ }
+
+ valerie_tokeniser_close( cmd.tokeniser );
+
+ return cmd.response;
+}
+
static valerie_response miracle_local_push( miracle_local local, char *command, mlt_service service )
{
command_argument_t cmd;
#ifdef linux
//pthread_kill_other_threads_np();
miracle_log( LOG_DEBUG, "Clean shutdown." );
- free( local );
- mlt_factory_close( );
+ //free( local );
+ //mlt_factory_close( );
#endif
}