Example #1
0
int main( int argc, char **argv  )
{
	mvcp_parser parser = NULL;
	mvcp_response response = NULL;
	char temp[ 1024 ];
	int index = 1;

	atexit( cleanup );
	if ( argc > 2 && !strcmp( argv[ 1 ], "-s" ) )
	{
		printf( "Melted Client Instance\n" );
		parser = mvcp_parser_init_remote( argv[ 2 ], 5250 );
		response = mvcp_parser_connect( parser );
		index = 3;
	}
	else
	{
		printf( "Melted Standalone Instance\n" );
		parser = melted_parser_init_local( );
		response = mvcp_parser_connect( parser );
	}

	if ( response != NULL )
	{
		/* process files on command lines before going into console mode */
		for ( ; index < argc; index ++ )
		{
			mvcp_response_close( response );
			response = mvcp_parser_run( parser, argv[ index ] );
			report( response );
		}
	
		while ( response != NULL && prompt( temp, 1024 ) )
		{
			mvcp_util_trim( mvcp_util_chomp( temp ) );
			if ( !strcasecmp( temp, "BYE" ) )
			{
				break;
			}
			else if ( strcmp( temp, "" ) )
			{
				mvcp_response_close( response );
				response = mvcp_parser_execute( parser, temp );
				report( response );
			}
		}
	}
	else
	{
		fprintf( stderr, "Unable to connect to a melted instance.\n" );
	}

	printf( "\n" );
	mvcp_parser_close( parser );

	return 0;
}
Example #2
0
static void *mvcp_remote_status_thread( void *arg )
{
	mvcp_remote remote = arg;
	char temp[ 10240 ];
	int length = 0;
	int offset = 0;
	mvcp_tokeniser tokeniser = mvcp_tokeniser_init( );
	mvcp_notifier notifier = mvcp_parser_get_notifier( remote->parser );
	mvcp_status_t status;
	int index = 0;

	mvcp_socket_write_data( remote->status, "STATUS\r\n", 8 );
	temp[ 0 ] = '\0';
	while ( !remote->terminated && 
			( length = mvcp_socket_read_data( remote->status, temp + offset, sizeof( temp ) - 1 ) ) >= 0 )
	{
		if ( length < 0 )
			break;
		temp[ length ] = '\0';
		if ( strchr( temp, '\n' ) == NULL )
		{
			offset = length;
			continue;
		}
		offset = 0;
		mvcp_tokeniser_parse_new( tokeniser, temp, "\n" );
		for ( index = 0; index < mvcp_tokeniser_count( tokeniser ); index ++ )
		{
			char *line = mvcp_tokeniser_get_string( tokeniser, index );
			if ( line[ strlen( line ) - 1 ] == '\r' )
			{
				mvcp_util_chomp( line );
				mvcp_status_parse( &status, line );
				mvcp_notifier_put( notifier, &status );
			}
			else
			{
				strcpy( temp, line );
				offset = strlen( temp );
			}
		}
	}

	mvcp_notifier_disconnected( notifier );
	mvcp_tokeniser_close( tokeniser );
	remote->terminated = 1;

	return NULL;
}