/*
* @project The CERN Tape Archive (CTA)
* @copyright Copyright(C) 2003-2021 CERN
* @license This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#pragma once
#include "common/log/Logger.hpp"
#include
#include
namespace castor {
namespace tape {
namespace tapeserver {
namespace daemon {
/**
* The contents of the castor.conf file to be used by a DataTransferSession.
*/
struct DataTransferConfig {
/**
* The size in bytes of a data-transfer buffer.
*/
uint32_t bufsz;
/**
* The total number of data-transfer buffers to be instantiated.
*/
uint32_t nbBufs;
/**
* When the tapebridged daemon requests the tapegatewayd daemon for a set of
* files to migrate to tape, this parameter defines the maximum number of
* bytes the set of files should represent.
*/
uint64_t bulkRequestMigrationMaxBytes;
/**
* When the tapebridged daemon requests the tapegatewayd daemon for a set of
* files to migrate to tape, this parameter defines the maximum number of files
* the set may contain.
*/
uint64_t bulkRequestMigrationMaxFiles;
/**
* When the tapebridged daemon requests the tapegatewayd daemon for a set of
* files to recall from tape, this parameter defines the maximum number of bytes
* the set of files should represent.
*/
uint64_t bulkRequestRecallMaxBytes;
/**
* When the tapebridged daemon requests the tapegatewayd daemon for a set of
* files to recall from tape, this parameter defines the maximum number of bytes
* the set of files should represent.
*/
uint64_t bulkRequestRecallMaxFiles;
/**
* The value of this parameter defines the maximum number of bytes to be written
* to tape before a flush to tape (synchronised tape-mark). Please note that a
* flush occurs on a file boundary therefore more bytes will normally be written
* to tape before the actual flush occurs.
*/
uint64_t maxBytesBeforeFlush;
/**
* The value of this parameter defines the maximum number of files to be written
* to tape before a flush to tape (synchronised or non-immediate tape-mark).
*/
uint64_t maxFilesBeforeFlush;
/**
* The number of disk I/O threads.
*/
uint32_t nbDiskThreads;
/**
* The location of the file containing the private RSA key to be used when
* using XROOT as the remote transfer protocol.
*/
std::string xrootPrivateKey;
/**
* The timeout for all the xroot functions. The default is 0 (no timeout)
*/
uint16_t xrootTimeout;
/**
* The boolean variable describing to use on not to use Logical
* Block Protection.
*/
bool useLbp;
/**
* The boolean variable describing to use on not to use Recommended
* Access Order
*/
bool useRAO;
/**
* The name of the RAO LTO algorithm to use
*/
std::string raoLtoAlgorithm;
/**
* The options that can be used by the raoAlgorithm
*/
std::string raoLtoAlgorithmOptions;
/**
* The path to the operator provided encyption control script (or empty string)
*/
std::string externalEncryptionKeyScript;
/**
* The path to the operator provided EOS free space fetch script (or empty string)
*/
std::string fetchEosFreeSpaceScript;
/**
* The timeout after which the mount of a tape is considered failed
*/
uint32_t tapeLoadTimeout;
/**
* Constructor that sets all integer member-variables to 0 and all string
* member-variables to the empty string.
*/
DataTransferConfig() throw();
}; // DataTransferConfig
} // namespace daemon
} // namespace tapeserver
} // namespace tape
} // namespace castor