XRootD
Loading...
Searching...
No Matches
XrdOssArcBackup.hh
Go to the documentation of this file.
1
#ifndef _XRDOSSARC_BACKUP_HH_
2
#define _XRDOSSARC_BACKUP_HH_
3
/******************************************************************************/
4
/* */
5
/* X r d O s s B a c k u p . h h */
6
/* */
7
/* (c) 2024 by the Board of Trustees of the Leland Stanford, Jr., University */
8
/* All Rights Reserved */
9
/* Produced by Andrew Hanushevsky for Stanford University under contract */
10
/* DE-AC02-76-SFO0515 with the Department of Energy */
11
/* */
12
/* This file is part of the XRootD software suite. */
13
/* */
14
/* XRootD is free software: you can redistribute it and/or modify it under */
15
/* the terms of the GNU Lesser General Public License as published by the */
16
/* Free Software Foundation, either version 3 of the License, or (at your */
17
/* option) any later version. */
18
/* */
19
/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
20
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
21
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
22
/* License for more details. */
23
/* */
24
/* You should have received a copy of the GNU Lesser General Public License */
25
/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
26
/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
27
/* */
28
/* The copyright holder's institutional names and contributor's names may not */
29
/* be used to endorse or promote products derived from this software without */
30
/* specific prior written permission of the institution or contributor. */
31
/******************************************************************************/
32
33
#include <deque>
34
#include <set>
35
#include <string>
36
37
#include "
Xrd/XrdJob.hh
"
38
39
#include "
XrdSys/XrdSysPthread.hh
"
40
41
/******************************************************************************/
42
/* X r d O s s A r c B a c k u p T a s k */
43
/******************************************************************************/
44
45
class
XrdOssArcBackup
;
46
47
class
XrdOssArcBackupTask
48
{
49
public
:
50
51
XrdOssArcBackup
&
Owner
;
52
const
char
*
theScope
;
53
char
*
theDSN
;
54
size_t
numBytes
;
55
int
numFiles
;
56
bool
relSpace
;
57
XrdSysSemaphore
btSem
;
58
59
XrdOssArcBackupTask
(
XrdOssArcBackup
& who,
char
* dsn);
60
~XrdOssArcBackupTask
();
61
62
bool
BkpXeq
();
63
};
64
65
/******************************************************************************/
66
/* X r d O s s A r c B a c k u p */
67
/******************************************************************************/
68
69
class
XrdOssArcBackup
:
public
XrdJob
70
{
71
friend
class
XrdOssArcBackupTask
;
72
public
:
73
74
bool
Archive
(
const
char
* dsName,
const
char
* dsDir);
75
76
const
77
char
*
Arena
() {
return
myArena;}
78
79
void
DoIt
()
override
;
80
81
static
82
void
StartWorkers
(
int
maxw);
83
84
const
85
char
*
theScope
() {
return
Scope;}
86
87
XrdOssArcBackup
(
const
char
* scp,
bool
& isOK);
88
~XrdOssArcBackup
() {}
89
90
private
:
91
92
bool
Add2Bkp(
const
char
* dsn);
93
int
GetManifest();
94
95
const
char
* Scope;
96
char
* myArena;
97
98
static
XrdSysMutex
dsBkpQMtx;
99
static
std::deque<XrdOssArcBackupTask*> dsBkpQ;
100
static
XrdSysCondVar2
dsBkpQCV;
101
102
static
int
numRunning;
103
static
int
maxRunning;
104
105
class
BkpWorker :
public
XrdJob
106
{
107
public
:
108
109
void
DoIt
()
override
;
110
111
BkpWorker() {}
112
~BkpWorker() {}
// Never deleted
113
};
114
115
struct
cmp_str
116
{
117
bool
operator()(
char
const
*a,
char
const
*b)
const
118
{
119
return
std::strcmp(a, b) < 0;
120
}
121
};
122
123
XrdSysMutex dsBkpSetMtx;
124
std::set<const char*, cmp_str> dsBkpSet;
125
};
126
#endif
XrdJob.hh
XrdSysPthread.hh
XrdJob
Definition
XrdJob.hh:43
XrdJob::XrdJob
XrdJob(const char *desc="")
Definition
XrdJob.hh:51
XrdJob::DoIt
virtual void DoIt()=0
XrdOssArcBackupTask::relSpace
bool relSpace
Definition
XrdOssArcBackup.hh:56
XrdOssArcBackupTask::theScope
const char * theScope
Definition
XrdOssArcBackup.hh:52
XrdOssArcBackupTask::theDSN
char * theDSN
Definition
XrdOssArcBackup.hh:53
XrdOssArcBackupTask::~XrdOssArcBackupTask
~XrdOssArcBackupTask()
Definition
XrdOssArcBackup.cc:97
XrdOssArcBackupTask::XrdOssArcBackupTask
XrdOssArcBackupTask(XrdOssArcBackup &who, char *dsn)
Definition
XrdOssArcBackup.cc:92
XrdOssArcBackupTask::Owner
XrdOssArcBackup & Owner
Definition
XrdOssArcBackup.hh:51
XrdOssArcBackupTask::BkpXeq
bool BkpXeq()
Definition
XrdOssArcBackup.cc:118
XrdOssArcBackupTask::btSem
XrdSysSemaphore btSem
Definition
XrdOssArcBackup.hh:57
XrdOssArcBackupTask::numFiles
int numFiles
Definition
XrdOssArcBackup.hh:55
XrdOssArcBackupTask::numBytes
size_t numBytes
Definition
XrdOssArcBackup.hh:54
XrdOssArcBackup
Definition
XrdOssArcBackup.hh:70
XrdOssArcBackup::DoIt
void DoIt() override
Definition
XrdOssArcBackup.cc:467
XrdOssArcBackup::XrdOssArcBackup
XrdOssArcBackup(const char *scp, bool &isOK)
Definition
XrdOssArcBackup.cc:342
XrdOssArcBackup::theScope
const char * theScope()
Definition
XrdOssArcBackup.hh:85
XrdOssArcBackup::Arena
const char * Arena()
Definition
XrdOssArcBackup.hh:77
XrdOssArcBackup::Archive
bool Archive(const char *dsName, const char *dsDir)
Definition
XrdOssArcBackup.cc:389
XrdOssArcBackup::~XrdOssArcBackup
~XrdOssArcBackup()
Definition
XrdOssArcBackup.hh:88
XrdOssArcBackup::XrdOssArcBackupTask
friend class XrdOssArcBackupTask
Definition
XrdOssArcBackup.hh:71
XrdOssArcBackup::StartWorkers
static void StartWorkers(int maxw)
Definition
XrdOssArcBackup.cc:558
XrdSysCondVar2
Definition
XrdSysPthread.hh:300
XrdSysMutex
Definition
XrdSysPthread.hh:165
XrdSysSemaphore
Definition
XrdSysPthread.hh:494
XrdOssArc
XrdOssArcBackup.hh
Generated by
1.15.0