xrootd
Main Page
Namespaces
Classes
Files
File List
File Members
src
XrdCns
XrdCnsLogFile.hh
Go to the documentation of this file.
1
#ifndef __XRDCnsLogFile_H_
2
#define __XRDCnsLogFile_H_
3
/******************************************************************************/
4
/* */
5
/* X r d C n s L o g F i l e . h h */
6
/* */
7
/* (c) 2009 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 "
XrdCns/XrdCnsLogRec.hh
"
34
#include "
XrdSys/XrdSysPthread.hh
"
35
36
class
XrdCnsLogFile
37
{
38
public
:
39
40
XrdCnsLogFile
*
Next
;
41
42
int
Add
(
XrdCnsLogRec
*
Rec
,
int
doSync=1);
43
44
int
Commit
();
45
46
int
Eol
();
47
48
const
char
*
FName
() {
return
logFN
;}
49
50
char
*
getLog
(
int
&Dlen) {Dlen =
logNext
-
logBuff
;
return
logBuff
;}
51
52
XrdCnsLogRec
*
getRec
();
53
54
static
void
maxRecs
(
int
nRecs) {
logRMax
= nRecs;
55
logBMax
= nRecs *
sizeof
(
XrdCnsLogRec
);
56
}
57
58
int
Open
(
int
aBuff=1, off_t thePos=0);
59
60
XrdCnsLogFile
*
Subscribe
(
const
char
*
Path
,
int
cNum);
61
62
int
Unlink
();
63
64
XrdCnsLogFile
(
const
char
*
Path
,
int
cnum=0,
int
Wait=1)
65
:
Next
(0),
logSem
(0),
subNext
(0),
66
logBuff
(0),
logNext
(0),
logFN
(strdup(Path)),
67
logFD
(-1),
logRdr
(cnum),
logWait
(Wait),
68
logOffset
(0),
recOffset
(0) {}
69
~XrdCnsLogFile
();
70
71
private
:
72
int
Read
(
char
*buff,
int
blen);
73
74
static
int
logRMax
;
75
static
int
logBMax
;
76
77
XrdSysMutex
logMutex
;
78
XrdSysSemaphore
logSem
;
79
XrdSysSemaphore
synSem
;
80
XrdCnsLogFile
*
subNext
;
81
82
XrdCnsLogRec
Rec
;
83
84
char
*
logBuff
;
85
char
*
logNext
;
86
87
char
*
logFN
;
88
int
logFD
;
89
int
logRdr
;
90
int
logWait
;
91
int
logOffset
;
92
int
recOffset
;
93
};
94
#endif
Generated by
1.8.3.1