XRootD
XrdFrmXfrQueue.hh
Go to the documentation of this file.
1
#ifndef __FRMXFRQUEUE_H__
2
#define __FRMXFRQUEUE_H__
3
/******************************************************************************/
4
/* */
5
/* X r d F r m X f r Q u e u e . h h */
6
/* */
7
/* (c) 2010 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 "
XrdFrc/XrdFrcRequest.hh
"
34
#include "
XrdOuc/XrdOucHash.hh
"
35
#include "
XrdSys/XrdSysPthread.hh
"
36
37
class
XrdFrcReqFile
;
38
class
XrdFrcRequest
;
39
class
XrdFrmXfrJob
;
40
41
class
XrdFrmXfrQueue
42
{
43
public
:
44
45
static
int
Add
(
XrdFrcRequest
*rP,
XrdFrcReqFile
*reqF,
int
theQ);
46
47
static
void
Done
(
XrdFrmXfrJob
*xP,
const
char
*Msg);
48
49
static
const
int
useInpQ
= 1;
50
static
const
int
useAnyQ
= 0;
51
static
const
int
useOutQ
= -1;
52
53
static
XrdFrmXfrJob
*
Get
(
int
ioQType);
54
55
static
int
Init
();
56
57
static
void
StopMon
(
void
*parg);
58
59
XrdFrmXfrQueue
() {}
60
~XrdFrmXfrQueue
() {}
61
62
private
:
63
64
static
XrdFrmXfrJob
*Pull(
int
ioQType);
65
static
int
Notify(
XrdFrcRequest
*rP,
int
qN,
int
rc,
const
char
*msg=0);
66
static
void
Send2File(
char
*Dest,
char
*Msg,
int
Mln);
67
static
void
Send2UDP(
char
*Dest,
char
*Msg,
int
Mln);
68
static
int
Stopped(
int
qNum);
69
static
const
char
*xfrName(
XrdFrcRequest
&reqData,
int
isOut);
70
71
static
XrdSysMutex
hMutex;
72
static
XrdOucHash<XrdFrmXfrJob>
hTab;
73
74
static
XrdSysMutex
qMutex;
75
static
XrdSysSemaphore
qReady;
76
77
struct
theQueue
78
{
XrdSysSemaphore
Avail;
79
XrdFrmXfrJob
*Free;
80
XrdFrmXfrJob
*First;
81
XrdFrmXfrJob
*Last;
82
XrdSysSemaphore
Alert;
83
const
char
*
File
;
84
const
char
*Name;
85
int
Stop;
86
int
qNum;
87
theQueue() : Avail(0),Free(0),First(0),Last(0),Alert(0),Stop(0) {}
88
~theQueue() {}
89
};
90
static
theQueue xfrQ[
XrdFrcRequest::numQ
];
91
};
92
#endif
XrdFrcRequest.hh
XrdFrmXfrJob
Definition:
XrdFrmXfrJob.hh:41
XrdOucHash.hh
File
XrdOucString File
Definition:
XrdSecpwdSrvAdmin.cc:159
XrdSysPthread.hh
XrdFrcReqFile
Definition:
XrdFrcReqFile.hh:37
XrdFrcRequest
Definition:
XrdFrcRequest.hh:34
XrdFrcRequest::numQ
static const int numQ
Definition:
XrdFrcRequest.hh:92
XrdFrmXfrQueue
Definition:
XrdFrmXfrQueue.hh:42
XrdFrmXfrQueue::useInpQ
static const int useInpQ
Definition:
XrdFrmXfrQueue.hh:49
XrdFrmXfrQueue::Done
static void Done(XrdFrmXfrJob *xP, const char *Msg)
Definition:
XrdFrmXfrQueue.cc:185
XrdFrmXfrQueue::Add
static int Add(XrdFrcRequest *rP, XrdFrcReqFile *reqF, int theQ)
Definition:
XrdFrmXfrQueue.cc:73
XrdFrmXfrQueue::StopMon
static void StopMon(void *parg)
Definition:
XrdFrmXfrQueue.cc:438
XrdFrmXfrQueue::Get
static XrdFrmXfrJob * Get(int ioQType)
Definition:
XrdFrmXfrQueue.cc:220
XrdFrmXfrQueue::Init
static int Init()
Definition:
XrdFrmXfrQueue.cc:239
XrdFrmXfrQueue::XrdFrmXfrQueue
XrdFrmXfrQueue()
Definition:
XrdFrmXfrQueue.hh:59
XrdFrmXfrQueue::useOutQ
static const int useOutQ
Definition:
XrdFrmXfrQueue.hh:51
XrdFrmXfrQueue::~XrdFrmXfrQueue
~XrdFrmXfrQueue()
Definition:
XrdFrmXfrQueue.hh:60
XrdFrmXfrQueue::useAnyQ
static const int useAnyQ
Definition:
XrdFrmXfrQueue.hh:50
XrdOucHash< XrdFrmXfrJob >
XrdSysMutex
Definition:
XrdSysPthread.hh:165
XrdSysSemaphore
Definition:
XrdSysPthread.hh:494
XrdFrm
XrdFrmXfrQueue.hh
Generated by
1.9.1