File Manager / inc / model /

fs-operation.h

/*
 * Copyright 2014 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

#ifndef _FS_OPERATION_H_
#define _FS_OPERATION_H_

#include "model/fs-manager.h"
#include "utils/app-types.h"

#include <Eina.h>

/* Forward declaration: */
typedef struct _fs_operation fs_operation;

/**
 * @brief File system operation callback data
 */
typedef struct _fs_operation_cb_data {
	struct _fs_manager *manager;    /**< file system manager structure pointer */
	int result;                     /**< result of operation */
} fs_operation_cb_data;

/**
 * @brief Prototype of file system operation complete callback function
 */
typedef void (*fs_operation_cb_func)(void *data);

/**
 * @brief Create file system operation instance
 * @return File system operation instance on success, otherwise NULL
 */
fs_operation *fs_operation_create();

/**
 * @brief Destroy file system operation instance
 * @param[in]   operation       File system operation instance
 */
void fs_operation_destroy(fs_operation *operation);

/**
 * @brief Set data to file system operation
 * @param[in]   operation       File system operation instance
 * @param[in]   file_list       List of files to process
 * @param[in]   dst_path        Path to dir to copy/move files
 * @param[in]   operation       Type of operation to perform
 * @return Error code. RESULT_TYPE_OK if operation success.
 */
int fs_operation_set_data(fs_operation *operation,
		Eina_List *file_list,
		const char *dst_path,
		operation_type type);

/**
 * @brief Execute file system operation
 * @remark Operation will be executed asynchronously.
 * @remark On operation complete callback function will be called.
 * @param[in]   operation       File system operation instance
 * @param[in]   cb_func         Callback function to notify when operation is complete
 * @param[in]   cb_data         Callback function data
 * @return Error code. RESULT_TYPE_OK if operation success.
 */
int fs_operation_execute(fs_operation *operation,
		fs_operation_cb_func cb_func,
		fs_operation_cb_data *cb_data);

#endif /* _FS_OPERATION_H_ */