XrdMonSndDummyXrootd.hh

Go to the documentation of this file.
00001 /*****************************************************************************/
00002 /*                                                                           */
00003 /*                         XrdMonSndDummyXrootd.hh                           */
00004 /*                                                                           */
00005 /* (c) 2005 by the Board of Trustees of the Leland Stanford, Jr., University */
00006 /*                            All Rights Reserved                            */
00007 /*       Produced by Jacek Becla for Stanford University under contract      */
00008 /*              DE-AC02-76SF00515 with the Department of Energy              */
00009 /*****************************************************************************/
00010 
00011 // $Id: XrdMonSndDummyXrootd.hh 24468 2008-06-22 16:47:03Z ganis $
00012 
00013 #ifndef XRDMONSNDDUMMYXROOTD_HH
00014 #define XRDMONSNDDUMMYXROOTD_HH
00015 
00016 #include <vector>
00017 #include <string>
00018 #include "XrdMon/XrdMonTypes.hh"
00019 #include "XrdMon/XrdMonSndTraceEntry.hh"
00020 #include "XrdMon/XrdMonSndDictEntry.hh"
00021 #include "XrdMon/XrdMonSndStageEntry.hh"
00022 using std::vector;
00023 using std::string;
00024 
00025 class XrdMonSndDummyXrootd {
00026 public:
00027     static kXR_int16 NEWUSERFREQUENCY;
00028     static kXR_int16 NEWPROCFREQUENCY;
00029     static kXR_int16 NEWFILEFREQUENCY;
00030     static kXR_int16 MAXHOSTS;
00031     
00032     XrdMonSndDummyXrootd();
00033     ~XrdMonSndDummyXrootd();
00034 
00035     int initialize(const char* pathFile);
00036     XrdMonSndDictEntry newXrdMonSndDictEntry();
00037     XrdMonSndStageEntry newXrdMonSndStageEntry();
00038     XrdMonSndTraceEntry newXrdMonSndTraceEntry();
00039     kXR_int32 closeOneFile();
00040     void closeFiles(vector<kXR_int32>& closedFiles);
00041     
00042 private:
00043     int readPaths(const char* pathFile);
00044     void createUser();
00045     void createProcess();
00046     void createFile();
00047     string generateUserName(kXR_int16 uid);
00048     string generateHostName();
00049     
00050     struct User {
00051         struct HostAndPid {
00052             string name;
00053             kXR_int16 pid;
00054             vector<kXR_int16> myFiles; // offsets in _paths vector
00055             HostAndPid(string n, kXR_int16 id) 
00056                 : name(n), pid(id) {};
00057         };
00058 
00059         kXR_int16 uid;
00060         vector<HostAndPid> myProcesses;
00061         User(kXR_int16 id) : uid(id) {}
00062     };
00063 
00064     vector<User> _users;
00065 
00066     kXR_int32 _noCalls2NewUser;
00067     kXR_int32 _noCalls2NewProc;
00068     kXR_int32 _noCalls2NewFile;
00069 
00070     kXR_int16 _activeUser;
00071     kXR_int16 _activeProcess;
00072     kXR_int16 _activeFile;
00073     bool    _newFile;
00074 
00075     struct PathData {
00076         string path;
00077         kXR_int16 fd;
00078         PathData(const char* s, kXR_int16 id) : path(s), fd(id) {}
00079     };
00080 
00081     // input data to pick from, loaded from ascii file
00082     // Yes, this might be a lot of memory
00083     vector<PathData> _paths;
00084 
00085     kXR_int32 _firstAvailId;
00086     vector<kXR_unt32> _noTracesPerDict;
00087 
00088     vector<bool> _openFiles; // true: open, false: close
00089 };
00090 
00091 #endif /* XRDMONSNDDUMMYXROOTD_HH */

Generated on Tue Jul 5 14:46:43 2011 for ROOT_528-00b_version by  doxygen 1.5.1