xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
XrdBwmLogger.hh
Go to the documentation of this file.
1 #ifndef __XRDBWMLOGGER_H__
2 #define __XRDBWMLOGGER_H__
3 /******************************************************************************/
4 /* */
5 /* X r d B w m L o g g e r . h h */
6 /* */
7 /* (c) 2008 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 <strings.h>
34 #include "XrdSys/XrdSysPthread.hh"
35 
36 class XrdBwmLoggerMsg;
37 class XrdOucProg;
38 class XrdSysError;
39 
41 {
42 public:
43 
44 struct Info
45  {const char *Tident;
46  const char *Lfn;
47  const char *lclNode;
48  const char *rmtNode;
49  time_t ATime; // Arrival
50  time_t BTime; // Begin
51  time_t CTime; // Complete
52  int numqIn;
53  int numqOut;
54  int numqXeq;
55  long long Size;
56  int ESec;
57  char Flow; // I or O
58  };
59 
60 void Event(Info &eInfo);
61 
62 const char *Prog() {return theTarget;}
63 
64 void sendEvents(void);
65 
66 int Start(XrdSysError *eobj);
67 
68  XrdBwmLogger(const char *Target);
69  ~XrdBwmLogger();
70 
71 private:
72 int Feed(const char *data, int dlen);
73 XrdBwmLoggerMsg *getMsg();
74 void retMsg(XrdBwmLoggerMsg *tp);
75 
76 pthread_t tid;
77 char *theTarget;
82 XrdBwmLoggerMsg *msgFirst;
83 XrdBwmLoggerMsg *msgLast;
85 XrdBwmLoggerMsg *msgFree;
86 int msgFD;
87 int endIT;
88 int msgsInQ;
89 static const int maxmInQ = 256;
90 char theEOL;
91 };
92 #endif
void retMsg(XrdBwmLoggerMsg *tp)
XrdSysMutex qMut
Definition: XrdBwmLogger.hh:80
const char * Prog()
Definition: XrdBwmLogger.hh:62
time_t CTime
Definition: XrdBwmLogger.hh:51
int numqXeq
Definition: XrdBwmLogger.hh:54
int ESec
Definition: XrdBwmLogger.hh:56
int Start(XrdSysError *eobj)
XrdSysError * eDest
Definition: XrdBwmLogger.hh:78
time_t BTime
Definition: XrdBwmLogger.hh:50
const char * lclNode
Definition: XrdBwmLogger.hh:47
char Flow
Definition: XrdBwmLogger.hh:57
int msgFD
Definition: XrdBwmLogger.hh:86
void sendEvents(void)
XrdBwmLoggerMsg * msgFree
Definition: XrdBwmLogger.hh:85
Definition: XrdSysError.hh:89
XrdBwmLoggerMsg * msgFirst
Definition: XrdBwmLogger.hh:82
Definition: XrdSysPthread.hh:164
XrdSysMutex fMut
Definition: XrdBwmLogger.hh:84
XrdBwmLoggerMsg * msgLast
Definition: XrdBwmLogger.hh:83
char * theTarget
Definition: XrdBwmLogger.hh:77
int msgsInQ
Definition: XrdBwmLogger.hh:88
int Feed(const char *data, int dlen)
Definition: XrdOucProg.hh:37
Definition: XrdSysPthread.hh:493
int numqIn
Definition: XrdBwmLogger.hh:52
char theEOL
Definition: XrdBwmLogger.hh:90
pthread_t tid
Definition: XrdBwmLogger.hh:76
const char * Lfn
Definition: XrdBwmLogger.hh:46
const char * Tident
Definition: XrdBwmLogger.hh:45
long long Size
Definition: XrdBwmLogger.hh:55
static const int maxmInQ
Definition: XrdBwmLogger.hh:89
Definition: XrdBwmLogger.hh:44
int numqOut
Definition: XrdBwmLogger.hh:53
Definition: XrdBwmLogger.hh:40
time_t ATime
Definition: XrdBwmLogger.hh:49
XrdBwmLogger(const char *Target)
XrdBwmLoggerMsg * getMsg()
XrdOucProg * theProg
Definition: XrdBwmLogger.hh:79
void Event(Info &eInfo)
XrdSysSemaphore qSem
Definition: XrdBwmLogger.hh:81
const char * rmtNode
Definition: XrdBwmLogger.hh:48
int endIT
Definition: XrdBwmLogger.hh:87