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
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
124 {char *pseq;
125 char *tbeg;
126 char *tend;
128
134int pSeqID; // For ident records
135int pSeqDID; // For dict records
149bool isCGI;
150
152};
153#endif
unsigned char kXR_char
Definition XPtypes.hh:65
Definition XrdJob.hh:43
Definition XrdNetMsg.hh:50
Definition XrdSysError.hh:90
Definition XrdSysPthread.hh:242
Definition XrdXrootdGSReal.hh:50
uint32_t GetDictID(const char *text, bool isPath=false)
int tEnd
Definition XrdXrootdGSReal.hh:144
bool Insert(int dlen)
char * idntHdr0
Definition XrdXrootdGSReal.hh:130
char * Reserve(int dlen)
int idntHsz1
Definition XrdXrootdGSReal.hh:132
static const int hdrNone
Format as JSON info.
Definition XrdXrootdGSReal.hh:86
char * udpBFirst
Definition XrdXrootdGSReal.hh:140
XrdXrootdMonitor::User gMon
Definition XrdXrootdGSReal.hh:151
static const int hdrInst
Include site, host, port, inst.
Definition XrdXrootdGSReal.hh:90
~XrdXrootdGSReal()
Destructor. Normally, this object is never deleted.
Definition XrdXrootdGSReal.hh:112
int SetAutoFlush(int afsec)
static const int fmtBin
Do not include info.
Definition XrdXrootdGSReal.hh:82
XrdXrootdMonGS * binHdr
Definition XrdXrootdGSReal.hh:138
XrdXrootdGSReal(const GSParms &gsParms, bool &aOK)
static const int fmtJson
Format as CGI info.
Definition XrdXrootdGSReal.hh:84
static const int hdrSite
Include site.
Definition XrdXrootdGSReal.hh:88
int pSeqDID
Definition XrdXrootdGSReal.hh:135
static const int hdrHost
Include site, host.
Definition XrdXrootdGSReal.hh:89
static const int optNoID
Don't send ident records.
Definition XrdXrootdGSReal.hh:93
int afTime
Definition XrdXrootdGSReal.hh:147
bool Insert(const char *data, int dlen)
void Expel(int dlen)
int tBeg
Definition XrdXrootdGSReal.hh:143
struct XrdXrootdGSReal::HdrInfo hInfo
char * udpBNext
Definition XrdXrootdGSReal.hh:141
int pSeqID
Definition XrdXrootdGSReal.hh:134
int pSeq
Definition XrdXrootdGSReal.hh:133
XrdSysRecMutex gMutex
Definition XrdXrootdGSReal.hh:136
char * dictHdr
Definition XrdXrootdGSReal.hh:129
int rsvbytes
Definition XrdXrootdGSReal.hh:145
int monType
Definition XrdXrootdGSReal.hh:146
char * udpBuffer
Definition XrdXrootdGSReal.hh:139
int hdrCGI(const GSParms &gs, char *buff, int blen)
static const int hdrNorm
Include standard header.
Definition XrdXrootdGSReal.hh:87
bool afRunning
Definition XrdXrootdGSReal.hh:148
char * udpBEnd
Definition XrdXrootdGSReal.hh:142
static const int fmtNone
Definition XrdXrootdGSReal.hh:81
bool isCGI
Definition XrdXrootdGSReal.hh:149
char * idntHdr1
Definition XrdXrootdGSReal.hh:131
static const int fmtCgi
Format as binary info.
Definition XrdXrootdGSReal.hh:83
XrdNetMsg * udpDest
Definition XrdXrootdGSReal.hh:137
int hdrJSN(const GSParms &gs, char *buff, int blen)
static const int hdrFull
Include site, host, port, inst, pgm.
Definition XrdXrootdGSReal.hh:91
int hdrBIN(const GSParms &gs)
Definition XrdXrootdGStream.hh:44
Definition XrdXrootdMonitor.hh:151
Definition XrdXrootdMonitor.hh:172
Definition XrdXrootdGSReal.hh:95
char Opt
Options.
Definition XrdXrootdGSReal.hh:101
kXR_char Type
the specific G-Stream identifier
Definition XrdXrootdGSReal.hh:100
const char * dest
Destination for records.
Definition XrdXrootdGSReal.hh:96
int maxL
Maximum packet length (default 32K)
Definition XrdXrootdGSReal.hh:98
int flsT
Flush time (default from monitor)
Definition XrdXrootdGSReal.hh:99
const char * pin
the plugin name.
Definition XrdXrootdGSReal.hh:95
char Fmt
How to handle the records.
Definition XrdXrootdGSReal.hh:102
int Mode
the monitor type for send routing.
Definition XrdXrootdGSReal.hh:97
char Hdr
Hdr type.
Definition XrdXrootdGSReal.hh:103
Definition XrdXrootdGSReal.hh:124
char * tbeg
Definition XrdXrootdGSReal.hh:125
char * tend
Definition XrdXrootdGSReal.hh:126
char * pseq
Definition XrdXrootdGSReal.hh:124
Definition XrdXrootdMonData.hh:81