XRootD
Loading...
Searching...
No Matches
XrdXrootdGSReal.hh
Go to the documentation of this file.
1#ifndef __XRDXROOTDGSREAL_HH_
2#define __XRDXROOTDGSREAL_HH_
3/******************************************************************************/
4/* */
5/* X r d X r o o t d G S R e a l . h h */
6/* */
7/* (c) 2019 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 "Xrd/XrdJob.hh"
38
39//-----------------------------------------------------------------------------
43//-----------------------------------------------------------------------------
44
45class XrdNetMsg;
46class XrdSysError;
47
50{
51public:
52
53void DoIt(); // XrdJob override
54
55void Flush();
56
57uint32_t GetDictID(const char *text, bool isPath=false);
58
59bool HasHdr();
60
61void Ident();
62
63bool Insert(const char *data, int dlen);
64
65bool Insert(int dlen);
66
67char *Reserve(int dlen);
68
69int SetAutoFlush(int afsec);
70
71int Space();
72
73//-----------------------------------------------------------------------------
79//-----------------------------------------------------------------------------
80
81 static const int fmtNone = 0;
82 static const int fmtBin = 1;
83 static const int fmtCgi = 2;
84 static const int fmtJson = 3;
85
86 static const int hdrNone = 0;
87 static const int hdrNorm = 1;
88 static const int hdrSite = 2;
89 static const int hdrHost = 3;
90 static const int hdrInst = 4;
91 static const int hdrFull = 5;
92
93 static const int optNoID = 0x01;
94
95 struct GSParms {const char *pin;
96 const char *dest;
97 int Mode;
98 int maxL;
99 int flsT;
101 char Opt;
102 char Fmt;
103 char Hdr;
104 };
105
106 XrdXrootdGSReal(const GSParms &gsParms, bool &aOK);
107
108//-----------------------------------------------------------------------------
110//-----------------------------------------------------------------------------
111
113
114private:
115
116
117void AutoFlush();
118void Expel(int dlen);
119int hdrBIN(const GSParms &gs);
120int hdrCGI(const GSParms &gs, char *buff, int blen);
121int hdrJSN(const GSParms &gs, char *buff, int blen);
122
123struct HdrInfo
124 {char *pseq;
125 char *tbeg;
126 char *tend;
127 } hInfo;
128
129char *dictHdr;
130char *idntHdr0;
131char *idntHdr1;
132int idntHsz1;
133int pSeq;
134int pSeqID; // For ident records
135int pSeqDID; // For dict records
136XrdSysRecMutex gMutex;
137XrdNetMsg *udpDest;
138XrdXrootdMonGS *binHdr;
139char *udpBuffer;
140char *udpBFirst;
141char *udpBNext;
142char *udpBEnd;
143int tBeg;
144int tEnd;
145int rsvbytes;
146int monType;
147int afTime;
148bool afRunning;
149bool isCGI;
150
152};
153#endif
unsigned char kXR_char
Definition XPtypes.hh:65
uint32_t GetDictID(const char *text, bool isPath=false)
char * Reserve(int dlen)
static const int hdrNone
Format as JSON info.
kXR_char Type
the specific G-Stream identifier
const char * dest
Destination for records.
static const int hdrInst
Include site, host, port, inst.
~XrdXrootdGSReal()
Destructor. Normally, this object is never deleted.
int SetAutoFlush(int afsec)
static const int fmtBin
Do not include info.
XrdXrootdGSReal(const GSParms &gsParms, bool &aOK)
static const int fmtJson
Format as CGI info.
int maxL
Maximum packet length (default 32K)
static const int hdrSite
Include site.
int flsT
Flush time (default from monitor)
const char * pin
the plugin name.
static const int hdrHost
Include site, host.
char Fmt
How to handle the records.
static const int optNoID
Don't send ident records.
bool Insert(const char *data, int dlen)
int Mode
the monitor type for send routing.
static const int hdrNorm
Include standard header.
static const int fmtNone
static const int fmtCgi
Format as binary info.
static const int hdrFull
Include site, host, port, inst, pgm.