DataTransferConfig.hpp 4.28 KB
Newer Older
1
2
/*
 * @project        The CERN Tape Archive (CTA)
3
 * @copyright      Copyright(C) 2003-2021 CERN
4
5
6
7
 * @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.
8
 *
9
10
11
12
 *                 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.
13
 *
14
15
16
 *                 You should have received a copy of the GNU General Public License
 *                 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
17
18
19

#pragma once

Victor Kotlyar's avatar
Victor Kotlyar committed
20
#include "common/log/Logger.hpp"
21
22
23
24
25
26
27
28
29
30

#include <stdint.h>
#include <string>

namespace castor {
namespace tape {
namespace tapeserver {
namespace daemon {

/**
31
 * The contents of the castor.conf file to be used by a DataTransferSession.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 */
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
47
48
   * files to migrate to tape, this parameter defines the maximum number of
   * bytes the set of files should represent.
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
   */
  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;

98
99
100
101
102
  /**
   * The timeout for all the xroot functions. The default is 0 (no timeout)
   */
  uint16_t xrootTimeout;

103
104
105
106
107
108
  /**
   * The boolean variable describing to use on not to use Logical
   * Block Protection.
   */
  bool useLbp;

109
110
111
112
113
  /**
   * The boolean variable describing to use on not to use Recommended
   * Access Order
   */
  bool useRAO;
114
115
  
  /**
116
   * The name of the RAO LTO algorithm to use
117
   */
118
119
120
121
122
123
  std::string raoLtoAlgorithm;
  
  /**
   * The options that can be used by the raoAlgorithm
   */
  std::string raoLtoAlgorithmOptions;
124

125
126
127
128
  /**
   * The path to the operator provided encyption control script (or empty string)
   */
  std::string externalEncryptionKeyScript;
129
130
131
132
133
  
  /**
   * The path to the operator provided EOS free space fetch script (or empty string)
   */
  std::string fetchEosFreeSpaceScript;
134
135
136
137
138
  
  /**
   * The timeout after which the mount of a tape is considered failed
   */
  uint32_t tapeLoadTimeout;
139

140
  /**
Steven Murray's avatar
Steven Murray committed
141
   * Constructor that sets all integer member-variables to 0 and all string
142
143
   * member-variables to the empty string.
   */
Steven Murray's avatar
Steven Murray committed
144
  DataTransferConfig() throw();
145
146
147
148
149
150
151

}; // DataTransferConfig

} // namespace daemon
} // namespace tapeserver
} // namespace tape
} // namespace castor