XRootD
Loading...
Searching...
No Matches
XrdStats.hh
Go to the documentation of this file.
1#ifndef __XRD_STATS_H__
2#define __XRD_STATS_H__
3/******************************************************************************/
4/* */
5/* X r d S t a t s . h h */
6/* */
7/* (c) 2004 by the Board of Trustees of the Leland Stanford, Jr., University */
8/* Produced by Andrew Hanushevsky for Stanford University under contract */
9/* DE-AC02-76-SFO0515 with the Department of Energy */
10/* */
11/* This file is part of the XRootD software suite. */
12/* */
13/* XRootD is free software: you can redistribute it and/or modify it under */
14/* the terms of the GNU Lesser General Public License as published by the */
15/* Free Software Foundation, either version 3 of the License, or (at your */
16/* option) any later version. */
17/* */
18/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
19/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
20/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
21/* License for more details. */
22/* */
23/* You should have received a copy of the GNU Lesser General Public License */
24/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
25/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
26/* */
27/* The copyright holder's institutional names and contributor's names may not */
28/* be used to endorse or promote products derived from this software without */
29/* specific prior written permission of the institution or contributor. */
30/******************************************************************************/
31
32#include <cstdlib>
33#include <vector>
34
36
37#define XRD_STATS_ADON 0x00000200
38#define XRD_STATS_ALLJ 0x00000300
39#define XRD_STATS_ALLX 0x000003FF
40#define XRD_STATS_INFO 0x00000001
41#define XRD_STATS_BUFF 0x00000002
42#define XRD_STATS_LINK 0x00000004
43#define XRD_STATS_PLUG 0x00000100
44#define XRD_STATS_POLL 0x00000008
45#define XRD_STATS_PROC 0x00000010
46#define XRD_STATS_PROT 0x00000020
47#define XRD_STATS_SCHD 0x00000040
48#define XRD_STATS_SGEN 0x00000080
49#define XRD_STATS_SYNC 0x40000000
50#define XRD_STATS_SYNCA 0x20000000
51
52#define XRD_STATS_JSON 0x10000000
53
54class XrdOucEnv;
55class XrdNetMsg;
56class XrdMonitor;
57class XrdScheduler;
58class XrdBuffManager;
59
60struct iovec;
61
63{
64public:
65
66void Export(XrdOucEnv& env);
67
68void Init(char **Dest, int iVal=600, int xOpts=0, int jOpts=0);
69
70void Report();
71
73 {public: virtual void Info(const char* data, int dlen) = 0;
74 virtual void Info(struct iovec* ioVec, int iovn) = 0;
76 virtual ~CallBack() {}
77 };
78
79// The following method is virtual only because we need to defer ld's
80// symbol resolution to avoid reporting a missing symbol in libServer.so.
81// This class is linked into the executable 'xrootd" so that XrdConfig
82// class can resolve the symbol that will be passed on to plugins.
83// This is a packaging issue that needs to get resolved at some point.
84//
85virtual
86void Stats(XrdStats::CallBack *InfoBack, int xOpts, int jOpts=0);
87
89 const char *hn, int port, const char *in, const char *pn,
90 const char *sn);
91
92virtual ~XrdStats() {if (buff) free(buff);}
93
94private:
95
96const char *GenStats(int &rsz, int opts);
97void GenStats(std::vector<struct iovec>& ioVec, int opts);
98int InfoStats(char *buff, int blen, int dosync=0);
99int ProcStats(char *buff, int blen, int dosync=0);
100
101static long tBoot; // Time at boot time
102
103XrdNetMsg *netDest[2] = {0,0};
104XrdScheduler *XrdSched;
105XrdSysError *XrdLog;
106XrdBuffManager *BuffPool;
107XrdMonitor *theMon;
108XrdSysMutex statsMutex;
109
110int blen;
111char *buff; // Used by all callers
112char *Head;
113const char *Hend;
114char *Jead;
115int Htln;
116int Jtln;
117const char *Jend;
118
119int jsonOpts;
120int xmlOpts;
121bool autoSync = false;
122
123const char *myHost;
124const char *myName;
125int myPort;
126};
127#endif
struct myOpts opts
virtual ~CallBack()
Definition XrdStats.hh:76
virtual void Info(struct iovec *ioVec, int iovn)=0
virtual void Info(const char *data, int dlen)=0
void Init(char **Dest, int iVal=600, int xOpts=0, int jOpts=0)
Definition XrdStats.cc:141
XrdStats(XrdSysError *eP, XrdScheduler *sP, XrdBuffManager *bP, const char *hn, int port, const char *in, const char *pn, const char *sn)
Definition XrdStats.cc:83
virtual ~XrdStats()
Definition XrdStats.hh:92
void Report()
Definition XrdStats.cc:166
void Export(XrdOucEnv &env)
Definition XrdStats.cc:131
virtual void Stats(XrdStats::CallBack *InfoBack, int xOpts, int jOpts=0)
Definition XrdStats.cc:224