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
72// Set the port of the source of the reports. The configuration calls it once
73// the network has bound the port, which "xrd.port any" does not know before.
74//
75void SetPort(int port);
76
78 {public: virtual void Info(const char* data, int dlen) = 0;
79 virtual void Info(struct iovec* ioVec, int iovn) = 0;
81 virtual ~CallBack() {}
82 };
83
84// The following method is virtual only because we need to defer ld's
85// symbol resolution to avoid reporting a missing symbol in libServer.so.
86// This class is linked into the executable 'xrootd" so that XrdConfig
87// class can resolve the symbol that will be passed on to plugins.
88// This is a packaging issue that needs to get resolved at some point.
89//
90virtual
91void Stats(XrdStats::CallBack *InfoBack, int xOpts, int jOpts=0);
92
94 const char *hn, int port, const char *in, const char *pn,
95 const char *sn);
96
97virtual ~XrdStats() {if (buff) free(buff); if (Head) free(Head);
98 if (Jead) free(Jead);
99 }
100
101private:
102
103const char *GenStats(int &rsz, int opts);
104void GenStats(std::vector<struct iovec>& ioVec, int opts);
105int InfoStats(char *buff, int blen, int dosync=0);
106int ProcStats(char *buff, int blen, int dosync=0);
107
108static long tBoot; // Time at boot time
109
110XrdNetMsg *netDest[2] = {0,0};
111XrdScheduler *XrdSched;
112XrdSysError *XrdLog;
113XrdBuffManager *BuffPool;
114XrdMonitor *theMon;
115XrdSysMutex statsMutex;
116
117int blen;
118char *buff; // Used by all callers
119char *Head;
120const char *Hend;
121char *Jead;
122int Htln;
123int Jtln;
124const char *Jend;
125
126int jsonOpts;
127int xmlOpts;
128bool autoSync = false;
129
130const char *myHost;
131const char *myName;
132const char *myProg;
133const char *mySite;
134int myPort;
135};
136#endif
struct myOpts opts
virtual ~CallBack()
Definition XrdStats.hh:81
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:155
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
void SetPort(int port)
Definition XrdStats.cc:110
virtual ~XrdStats()
Definition XrdStats.hh:97
void Report()
Definition XrdStats.cc:180
void Export(XrdOucEnv &env)
Definition XrdStats.cc:145
virtual void Stats(XrdStats::CallBack *InfoBack, int xOpts, int jOpts=0)
Definition XrdStats.cc:238