/*
 * Copyright (c) CERN 2013-2017
 *
 * Copyright (c) Members of the EMI Collaboration. 2010-2013
 *  See  http://www.eu-emi.eu/partners for details on the copyright
 *  holders.
 *
 * 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.
 */

#pragma once
#ifndef GRIDFTP_PLUGIN_H
#define GRIDFTP_PLUGIN_H

#include <gfal_plugins_api.h>

// Configuration options
#define GRIDFTP_CONFIG_GROUP          "GRIDFTP PLUGIN"
#define GRIDFTP_CONFIG_IPV6           "IPV6"
#define GRIDFTP_CONFIG_SPAS           "SPAS"
#define GRIDFTP_CONFIG_V2             "GRIDFTP_V2"
#define GRIDFTP_CONFIG_SESSION_REUSE  "SESSION_REUSE"
#define GRIDFTP_CONFIG_OP_TIMEOUT     "OPERATION_TIMEOUT"
#define GRIDFTP_CONFIG_DCAU           "DCAU"
#define GRIDFTP_CONFIG_DELAY_PASSV    "DELAY_PASSV"
#define GRIDFTP_CONFIG_ENABLE_PASV_PLUGIN "ENABLE_PASV_PLUGIN"
#define GRIDFTP_CONFIG_BLOCK_SIZE     "BLOCK_SIZE"
#define GRIDFTP_CONFIG_NB_STREAM      "RD_NB_STREAM"

#define GRIDFTP_CONFIG_TRANSFER_CHECKSUM       "COPY_CHECKSUM_TYPE"
#define GRIDFTP_CONFIG_TRANSFER_PERF_TIMEOUT   "PERF_MARKER_TIMEOUT"
#define GRIDFTP_CONFIG_TRANSFER_SKIP_CHECKSUM  "SKIP_SOURCE_CHECKSUM"
#define GRIDFTP_CONFIG_TRANSFER_UDT            "ENABLE_UDT"


#ifdef __cplusplus
extern "C" {
#endif

const char *gridftp_plugin_name();

plugin_handle gridftp_plugin_load(gfal2_context_t handle, GError ** err);

void gridftp_plugin_unload(plugin_handle handle);

gboolean gridftp_check_url_transfer(plugin_handle handle,
        gfal2_context_t context, const char* src, const char* dst,
        gfal_url2_check type);

#ifdef __cplusplus
}
#endif

#endif /* GRIDFTP_PLUGIN_H */
