Example #1
0
void gridftp_unlink_internal(gfal2_context_t context, GridFTPSessionHandler* sess, const char * path)
{
    gfal_log(GFAL_VERBOSE_TRACE, " -> [GridFTPModule::unlink] ");
    GridFTPRequestState req(sess); // get connection session

    globus_result_t res = globus_ftp_client_delete(req.handler->get_ftp_client_handle(),
            path, req.handler->get_ftp_client_operationattr(),
            globus_ftp_client_done_callback, &req);
    gfal_globus_check_result(GFAL_GRIDFTP_SCOPE_UNLINK, res);
    req.wait(GFAL_GRIDFTP_SCOPE_UNLINK);
    gfal_log(GFAL_VERBOSE_TRACE, " <- [GridFTPModule::unlink] ");
}
Example #2
0
void ADIOI_GRIDFTP_Delete(char *filename, int *error_code)
{
    char myname[]="ADIOI_GRIDFTP_Delete";
    int myrank, nprocs;
    globus_ftp_client_handle_t handle;
    globus_result_t result;

    *error_code = MPI_SUCCESS;

    MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
    MPI_Comm_rank(MPI_COMM_WORLD, &myrank);

    globus_module_activate(GLOBUS_FTP_CLIENT_MODULE);
    result=globus_ftp_client_handle_init(&handle,GLOBUS_NULL);

    if (result != GLOBUS_SUCCESS )
    {
	    globus_err_handler("globus_ftp_client_handle_init",myname,result);
	    *error_code= MPIO_Err_create_code(MPI_SUCCESS,
			    MPIR_ERR_RECOVERABLE,
			    myname, __LINE__,
			    MPI_ERR_IO,
			    "**io", "**io %s",
			    globus_object_printable_to_string(globus_error_get(result)));
	    return;
    }

    delete_done=GLOBUS_FALSE;
    delete_success=GLOBUS_FALSE;
    result=globus_ftp_client_delete(&handle,filename,GLOBUS_NULL,delete_cb,GLOBUS_NULL);
    if (result != GLOBUS_SUCCESS )
	{
	    globus_err_handler("globus_ftp_client_delete",myname,result);
	    *error_code= MPIO_Err_create_code(MPI_SUCCESS,
			    MPIR_ERR_RECOVERABLE,
			    myname, __LINE__,
			    MPI_ERR_IO,
			    "**io", "**io %s",
			    globus_object_printable_to_string(globus_error_get(result)));
	    return;
	}
    globus_mutex_lock(&lock);
    while ( delete_done!=GLOBUS_TRUE )
	globus_cond_wait(&cond,&lock);
    globus_mutex_unlock(&lock);
    result=globus_ftp_client_handle_destroy(&handle);
    if (result != GLOBUS_SUCCESS )
	{
	    globus_err_handler("globus_ftp_client_handle_destroy",myname,result);
	    *error_code= MPIO_Err_create_code(MPI_SUCCESS,
			    MPIR_ERR_RECOVERABLE,
			    myname, __LINE__,
			    MPI_ERR_IO,
			    "**io", "**io %s",
			    globus_object_printable_to_string(globus_error_get(result)));
	    return;
	}

    if ( delete_success!=GLOBUS_TRUE )
	{
	    *error_code= MPIO_Err_create_code(MPI_SUCCESS,
			    MPIR_ERR_RECOVERABLE,
			    myname, __LINE__,
			    MPI_ERR_IO,
			    "**io", "**io %s",
			    globus_object_printable_to_string(globus_error_get(result)));
	}
}
Example #3
0
void gw_tm_ftp_transfer_rmdir_cb(
        void *                         user_arg,
        globus_ftp_client_handle_t *   handle,
        globus_object_t *              err)
{
	gw_tm_ftp_transfer_t *  xfr;
	gw_tm_ftp_stack_t *     file;
    globus_result_t         grc;
    int                     xfr_id;
    
	xfr_id = *( (int *) user_arg );
	
	if ( ( xfr_id < GW_TM_FTP_XFR_POOL_MAX ) && (xfr_id >= 0 ) )
	    if ( gw_tm_ftp_xfr_pool[xfr_id] != NULL )
	    	xfr = gw_tm_ftp_xfr_pool[xfr_id];
	    else
	    {
	    	/*printf("RMDIR %d - FAILURE transfer does not exisit.\n", xfr_id);*/
	    	
	    	free(user_arg);
	    	return;
	    }
	else
	{
	    /*printf("RMDIR %d - FAILURE invalid transfer id in callback.\n", xfr_id);*/
	    			
    	free(user_arg);
		return;	
	}
    
    if(err != GLOBUS_SUCCESS) /* ERROR RMDIR OR EXPAND */
    {
		printf("RMDIR %d - FAILURE ftp_client_delete/rmdir command.\n",xfr->jid);
		
		free(user_arg);
		return;
    }

	file = gw_tm_ftp_stack_pop(&(xfr->file_stack));
	
	if( file != NULL )
	{
		if ( (file->type == GW_TM_FTP_DIR) && (file->expanded == GW_FALSE) )
		{
			
			gw_tm_ftp_transfer_flush (xfr);
			gw_tm_ftp_transfer_expand_url (xfr_id, file->file_name, 
					gw_tm_ftp_transfer_rmdir_cb);
					
			free(file->file_name);
			free(file);
			free(user_arg);
			return;						
		}
		else
		{
			if ( file->type == GW_TM_FTP_FILE )
				grc = globus_ftp_client_delete (&(xfr->handle),
        										file->file_name,
        								    	&(xfr->op_attr),
									        	gw_tm_ftp_transfer_rmdir_cb,
									        	user_arg);
			else
				grc = globus_ftp_client_rmdir ( &(xfr->handle),
												file->file_name,
												&(xfr->op_attr),
									        	gw_tm_ftp_transfer_rmdir_cb,
									        	user_arg);
									        	
			if ( grc != GLOBUS_SUCCESS )
			{
				printf("RMDIR %d - FAILURE ftp_client_delete/rmdir command\n", xfr->jid);
				free(user_arg);
			}					
				      
			free(file->file_name);
			free(file);
			return;
		}
	}
	
	printf("RMDIR %d - SUCCESS -\n", xfr->jid);	
	free(user_arg);
}