xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
XrdSsiEvent.hh
Go to the documentation of this file.
1 #ifndef __XRDSSIEVENT_HH__
2 #define __XRDSSIEVENT_HH__
3 /******************************************************************************/
4 /* */
5 /* X r d S s i E v e n t . h h */
6 /* */
7 /* (c) 2015 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 "Xrd/XrdJob.hh"
34 #include "XrdSsi/XrdSsiAtomics.hh"
35 
37 {
38 public:
39 
41 
43 
44 virtual void DoIt();
45 
46 virtual void HandleResponse(XrdCl::XRootDStatus *status,
47  XrdCl::AnyObject *response)
48  {AddEvent(status, response);}
49 
50 virtual int XeqEvent(XrdCl::XRootDStatus *st, XrdCl::AnyObject **resp) = 0;
51 
52 virtual void XeqEvFin() = 0;
53 
55  running(false), isClear(true)
56  {*tident = 0;}
57 
59 
60 protected:
61 
62 char tident[24]; //"c %u#%u" with %u max 10 digits
63 
64 private:
65 struct EventData
69 
70  void Move2(EventData &dest) {dest.status = status; status = 0;
71  dest.response = response; response = 0;
72  dest.next = next; next = 0;
73  }
74 
76  : status(st), response(resp), next(0) {}
78  };
79 
80 void ClrEvent(EventData *fdP);
81 
85 bool running;
86 bool isClear;
87 static
89 };
90 #endif
void Move2(EventData &dest)
Definition: XrdSsiEvent.hh:70
void Lock()
Definition: XrdSsiAtomics.hh:115
Definition: XrdSsiAtomics.hh:109
Definition: XrdClAnyObject.hh:32
XrdCl::AnyObject * response
Definition: XrdSsiEvent.hh:67
EventData thisEvent
Definition: XrdSsiEvent.hh:83
virtual void HandleResponse(XrdCl::XRootDStatus *status, XrdCl::AnyObject *response)
Definition: XrdSsiEvent.hh:46
bool running
Definition: XrdSsiEvent.hh:85
XrdCl::XRootDStatus * status
Definition: XrdSsiEvent.hh:66
void AddEvent(XrdCl::XRootDStatus *st, XrdCl::AnyObject *resp)
static EventData * freeEvent
Definition: XrdSsiEvent.hh:88
Request status.
Definition: XrdClXRootDResponses.hh:218
Definition: XrdSsiEvent.hh:65
Definition: XrdSsiEvent.hh:36
~XrdSsiEvent()
Definition: XrdSsiEvent.hh:58
EventData * lastEvent
Definition: XrdSsiEvent.hh:84
virtual void XeqEvFin()=0
EventData(XrdCl::XRootDStatus *st=0, XrdCl::AnyObject *resp=0)
Definition: XrdSsiEvent.hh:75
virtual void DoIt()
Handle an async response.
Definition: XrdClXRootDResponses.hh:1116
bool isClear
Definition: XrdSsiEvent.hh:86
virtual int XeqEvent(XrdCl::XRootDStatus *st, XrdCl::AnyObject **resp)=0
char tident[24]
Definition: XrdSsiEvent.hh:62
XrdSsiMutex evMutex
Definition: XrdSsiEvent.hh:82
XrdSsiEvent()
Definition: XrdSsiEvent.hh:54
EventData * next
Definition: XrdSsiEvent.hh:68
void ClrEvent()
Definition: XrdSsiEvent.hh:42
void UnLock()
Definition: XrdSsiAtomics.hh:117
Definition: XrdJob.hh:42
~EventData()
Definition: XrdSsiEvent.hh:77