#ifndef XrdMon_XrdFileCloseReporter_H
#define XrdMon_XrdFileCloseReporter_H
#include "Glasses/ZGlass.h"
#include "Gled/GCondition.h"
class XrdFile;
class XrdUser;
class XrdServer;
class ZLog;
class GThread;
class XrdFileCloseReporter : public ZGlass
{
MAC_RNR_FRIENDS(XrdFileCloseReporter);
public:
struct FileUserServer
{
XrdFile *fFile;
XrdUser *fUser;
XrdServer *fServer;
FileUserServer() :
fFile(0), fUser(0), fServer (0) {}
FileUserServer(XrdFile* f, XrdUser* u, XrdServer* s) :
fFile(f), fUser(u), fServer (s) {}
};
private:
void _init();
protected:
ZLink<ZLog> mLog;
Int_t mCondWaitSec;
Int_t mNProcessed;
Int_t mNQueued;
Bool_t bRunning;
GThread *mReporterThread;
GCondition mReporterCond;
list<FileUserServer> mReporterQueue;
static void* tl_ReportLoop(XrdFileCloseReporter* r);
static void cu_ReportLoop(XrdFileCloseReporter* r);
void ReportLoop();
void DrainQueue();
virtual void ReportLoopInit();
virtual void ReportFileClosed(FileUserServer& fus);
virtual void ReportCondWaitTimeout();
virtual void ReportLoopFinalize();
public:
XrdFileCloseReporter(const Text_t* n="XrdFileCloseReporter", const Text_t* t=0);
virtual ~XrdFileCloseReporter();
void FileClosed(XrdFile* file, XrdUser* user, XrdServer* server);
void StartReporter();
void StopReporter();
#include "XrdFileCloseReporter.h7"
ClassDef(XrdFileCloseReporter, 1);
};
#endif
XrdFileCloseReporter.h:10 XrdFileCloseReporter.h:11 XrdFileCloseReporter.h:12 XrdFileCloseReporter.h:13 XrdFileCloseReporter.h:14 XrdFileCloseReporter.h:15 XrdFileCloseReporter.h:16 XrdFileCloseReporter.h:17 XrdFileCloseReporter.h:18 XrdFileCloseReporter.h:19 XrdFileCloseReporter.h:20 XrdFileCloseReporter.h:21 XrdFileCloseReporter.h:22 XrdFileCloseReporter.h:23 XrdFileCloseReporter.h:24 XrdFileCloseReporter.h:25 XrdFileCloseReporter.h:26 XrdFileCloseReporter.h:27 XrdFileCloseReporter.h:28 XrdFileCloseReporter.h:29 XrdFileCloseReporter.h:30 XrdFileCloseReporter.h:31 XrdFileCloseReporter.h:32 XrdFileCloseReporter.h:33 XrdFileCloseReporter.h:34 XrdFileCloseReporter.h:35 XrdFileCloseReporter.h:36 XrdFileCloseReporter.h:37 XrdFileCloseReporter.h:38 XrdFileCloseReporter.h:39 XrdFileCloseReporter.h:40 XrdFileCloseReporter.h:41 XrdFileCloseReporter.h:42 XrdFileCloseReporter.h:43 XrdFileCloseReporter.h:44 XrdFileCloseReporter.h:45 XrdFileCloseReporter.h:46 XrdFileCloseReporter.h:47 XrdFileCloseReporter.h:48 XrdFileCloseReporter.h:49 XrdFileCloseReporter.h:50 XrdFileCloseReporter.h:51 XrdFileCloseReporter.h:52 XrdFileCloseReporter.h:53 XrdFileCloseReporter.h:54 XrdFileCloseReporter.h:55 XrdFileCloseReporter.h:56 XrdFileCloseReporter.h:57 XrdFileCloseReporter.h:58 XrdFileCloseReporter.h:59 XrdFileCloseReporter.h:60 XrdFileCloseReporter.h:61 XrdFileCloseReporter.h:62 XrdFileCloseReporter.h:63 XrdFileCloseReporter.h:64 XrdFileCloseReporter.h:65 XrdFileCloseReporter.h:66 XrdFileCloseReporter.h:67 XrdFileCloseReporter.h:68 XrdFileCloseReporter.h:69 XrdFileCloseReporter.h:70 XrdFileCloseReporter.h:71 XrdFileCloseReporter.h:72 XrdFileCloseReporter.h:73 XrdFileCloseReporter.h:74 XrdFileCloseReporter.h:75 XrdFileCloseReporter.h:76 XrdFileCloseReporter.h:77