TProofServ TProofServ is the PROOF server. It can act either as the master server or as a slave server, depending on its startup arguments. It receives and handles message coming from the client or from the master server.
TProofServ(Int_t* argc, char** argv, FILE* flog = 0) | |
virtual | ~TProofServ() |
void | TObject::AbstractMethod(const char* method) const |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual const char* | TApplication::ApplicationName() const |
static Bool_t | TQObject::AreAllSignalsBlocked() |
Bool_t | TQObject::AreSignalsBlocked() const |
Int_t | TApplication::Argc() const |
char** | TApplication::Argv() const |
char* | TApplication::Argv(Int_t index) const |
static Bool_t | TQObject::BlockAllSignals(Bool_t b) |
Bool_t | TQObject::BlockSignals(Bool_t b) |
virtual void | TObject::Browse(TBrowser* b) |
virtual void | TQObject::ChangedBy(const char* method)SIGNAL |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TObject::Clear(Option_t* = "") |
void | TApplication::ClearInputFiles() |
virtual TObject* | TObject::Clone(const char* newname = "") const |
void | TQObject::CollectClassSignalLists(TList& list, TClass* cls) |
virtual Int_t | TObject::Compare(const TObject* obj) const |
Bool_t | TQObject::Connect(const char* signal, const char* receiver_class, void* receiver, const char* slot) |
static Bool_t | TQObject::Connect(TQObject* sender, const char* signal, const char* receiver_class, void* receiver, const char* slot) |
static Bool_t | TQObject::Connect(const char* sender_class, const char* signal, const char* receiver_class, void* receiver, const char* slot) |
virtual void | TQObject::Connected(const char*) |
virtual void | TObject::Copy(TObject& object) const |
Int_t | CopyFromCache(const char* name) |
Int_t | CopyToCache(const char* name, Int_t opt = 0) |
static void | TApplication::CreateApplication() |
virtual Int_t | CreateServer() |
virtual void | TObject::Delete(Option_t* option = "")MENU |
virtual void | TQObject::Destroyed()SIGNAL |
virtual void | DisableTimeout() |
Bool_t | TQObject::Disconnect(const char* signal = 0, void* receiver = 0, const char* slot = 0) |
static Bool_t | TQObject::Disconnect(TQObject* sender, const char* signal = 0, void* receiver = 0, const char* slot = 0) |
static Bool_t | TQObject::Disconnect(const char* class_name, const char* signal, void* receiver = 0, const char* slot = 0) |
virtual void | TQObject::Disconnected(const char*) |
virtual Int_t | TObject::DistancetoPrimitive(Int_t px, Int_t py) |
virtual void | TObject::Draw(Option_t* option = "") |
virtual void | TObject::DrawClass() constMENU |
virtual TObject* | TObject::DrawClone(Option_t* option = "") constMENU |
virtual void | TObject::Dump() constMENU |
void | TQObject::Emit(const char* signal) |
void | TQObject::Emit(const char* signal, Long_t* paramArr) |
void | TQObject::Emit(const char* signal, const char* params) |
void | TQObject::Emit(const char* signal, Double_t param) |
void | TQObject::Emit(const char* signal, Long_t param) |
void | TQObject::Emit(const char* signal, Long64_t param) |
void | TQObject::Emit(const char* signal, Bool_t param) |
void | TQObject::Emit(const char* signal, Char_t param) |
void | TQObject::Emit(const char* signal, UChar_t param) |
void | TQObject::Emit(const char* signal, Short_t param) |
void | TQObject::Emit(const char* signal, UShort_t param) |
void | TQObject::Emit(const char* signal, Int_t param) |
void | TQObject::Emit(const char* signal, UInt_t param) |
void | TQObject::Emit(const char* signal, ULong_t param) |
void | TQObject::Emit(const char* signal, ULong64_t param) |
void | TQObject::Emit(const char* signal, Float_t param) |
void | TQObject::EmitVA(const char* signal, Int_t nargs) |
void | TQObject::EmitVA(const char* signal, Int_t nargs, va_list va) |
virtual void | EnableTimeout() |
virtual void | TObject::Error(const char* method, const char* msgfmt) const |
virtual void | TObject::Execute(const char* method, const char* params, Int_t* error = 0) |
virtual void | TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) |
virtual void | TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) |
static Long_t | TApplication::ExecuteFile(const char* file, Int_t* error = 0) |
virtual void | TObject::Fatal(const char* method, const char* msgfmt) const |
virtual TObject* | TObject::FindObject(const char* name) const |
virtual TObject* | TObject::FindObject(const TObject* obj) const |
void | FlushLogFile() |
TObject* | Get(const char* namecycle) |
virtual TApplicationImp* | TApplication::GetApplicationImp() |
static TList* | TApplication::GetApplications() |
TApplication* | TApplication::GetAppRemote() const |
const char* | GetConfDir() const |
const char* | GetConfFile() const |
Float_t | GetCpuTime() const |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
const char* | GetGroup() const |
Int_t | GetGroupId() const |
Int_t | GetGroupSize() const |
virtual const char* | TObject::GetIconName() const |
const char* | TApplication::GetIdleCommand() const |
const char* | GetImage() const |
Int_t | GetInflateFactor() const |
TList* | TQObject::GetListOfClassSignals() const |
TList* | TQObject::GetListOfConnections() const |
TList* | TQObject::GetListOfSignals() const |
Int_t | GetLogLevel() const |
virtual const char* | TObject::GetName() const |
TDSetElement* | GetNextPacket(Long64_t totalEntries = -1) |
virtual char* | TObject::GetObjectInfo(Int_t px, Int_t py) const |
static Bool_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
virtual void | GetOptions(Int_t* argc, char** argv) |
const char* | GetOrdinal() const |
const char* | GetPrefix() const |
TProof* | GetProof() const |
Int_t | GetProtocol() const |
Float_t | GetRealTime() const |
const char* | GetService() const |
const char* | GetSessionDir() const |
const char* | GetSessionTag() const |
TSignalHandler* | TApplication::GetSignalHandler() const |
TSocket* | GetSocket() const |
virtual const char* | TObject::GetTitle() const |
virtual UInt_t | TObject::GetUniqueID() const |
const char* | GetUser() const |
const char* | GetWorkDir() const |
virtual TProofServ::EQueryAction | GetWorkers(TList* workers, Int_t& prioritychange) |
virtual void | HandleException(Int_t sig) |
virtual void | TApplication::HandleIdleTimer()SIGNAL |
virtual void | HandleSigPipe() |
virtual void | HandleSocketInput() |
virtual void | HandleTermination() |
virtual Bool_t | TApplication::HandleTermInput() |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual void | HandleUrgentData() |
virtual Bool_t | TQObject::HasConnection(const char* signal_name) const |
virtual ULong_t | TObject::Hash() const |
virtual void | TApplication::Hide() |
virtual void | TQObject::HighPriority(const char* signal_name, const char* slot_name = 0) |
virtual void | TApplication::Iconify() |
virtual void | TObject::Info(const char* method, const char* msgfmt) const |
virtual Bool_t | TObject::InheritsFrom(const char* classname) const |
virtual Bool_t | TObject::InheritsFrom(const TClass* cl) const |
virtual void | TApplication::Init() |
void | TApplication::InitializeGraphics() |
TObjArray* | TApplication::InputFiles() const |
virtual void | TObject::Inspect() constMENU |
void | Interrupt() |
void | TObject::InvertBit(UInt_t f) |
virtual TClass* | IsA() const |
static Bool_t | IsActive() |
virtual Bool_t | TApplication::IsCmdThread() |
Bool_t | IsEndMaster() const |
virtual Bool_t | TObject::IsEqual(const TObject* obj) const |
virtual Bool_t | TObject::IsFolder() const |
Bool_t | IsMaster() const |
Bool_t | TObject::IsOnHeap() const |
Bool_t | IsParallel() const |
Bool_t | TApplication::IsRunning() const |
virtual Bool_t | TObject::IsSortable() const |
Bool_t | IsTopMaster() const |
Bool_t | TObject::IsZombie() const |
virtual void | TApplication::KeyPressed(Int_t key)SIGNAL |
static void | TQObject::LoadRQ_OBJECT() |
virtual void | TApplication::Lower() |
virtual void | TQObject::LowPriority(const char* signal_name, const char* slot_name = 0) |
virtual void | TApplication::ls(Option_t* option = "") const |
void | TObject::MayNotUse(const char* method) const |
virtual void | TQObject::Message(const char* msg)SIGNAL |
static void | TApplication::NeedGraphicsLibs() |
Bool_t | TApplication::NoLogoOpt() const |
Bool_t | TApplication::NoLogOpt() const |
virtual Bool_t | TObject::Notify() |
virtual Int_t | TQObject::NumberOfConnections() const |
virtual Int_t | TQObject::NumberOfSignals() const |
virtual void | TApplication::Open() |
static void | TObject::operator delete(void* ptr) |
static void | TObject::operator delete(void* ptr, void* vp) |
static void | TObject::operator delete[](void* ptr) |
static void | TObject::operator delete[](void* ptr, void* vp) |
void* | TObject::operator new(size_t sz) |
void* | TObject::operator new(size_t sz, void* vp) |
void* | TObject::operator new[](size_t sz) |
void* | TObject::operator new[](size_t sz, void* vp) |
TObject& | TObject::operator=(const TObject& rhs) |
virtual void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
virtual void | Print(Option_t* option = "") const |
virtual Long_t | TApplication::ProcessFile(const char* file, Int_t* error = 0) |
virtual Long_t | TApplication::ProcessLine(const char* line, Bool_t sync = kFALSE, Int_t* error = 0) |
Bool_t | TApplication::QuitOpt() const |
virtual void | TApplication::Raise() |
virtual Int_t | TObject::Read(const char* name) |
Int_t | ReceiveFile(const char* file, Bool_t bin, Long64_t size) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
virtual void | TApplication::RemoveIdleTimer() |
void | Reset(const char* dir) |
void | TObject::ResetBit(UInt_t f) |
Bool_t | TApplication::ReturnFromRun() const |
virtual void | TApplication::ReturnPressed(char* text)SIGNAL |
virtual void | Run(Bool_t retrn = kFALSE) |
virtual void | TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU |
virtual void | TObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "") |
virtual Int_t | SendAsynMessage(const char* msg, Bool_t lf = kTRUE) |
virtual void | SendLogFile(Int_t status = 0, Int_t start = -1, Int_t end = -1) |
void | SendParallel() |
void | SendStatistics() |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
virtual void | TApplication::SetEchoMode(Bool_t mode) |
virtual void | TApplication::SetIdleTimer(UInt_t idleTimeInSec, const char* command) |
static void | TObject::SetObjectStat(Bool_t stat) |
void | TApplication::SetReturnFromRun(Bool_t ret) |
virtual void | TObject::SetUniqueID(UInt_t uid) |
virtual void | TApplication::Show() |
virtual void | ShowMembers(TMemberInspector& insp, char* parent) |
virtual void | TApplication::StartIdleing() |
virtual void | TApplication::StopIdleing() |
virtual void | Streamer(TBuffer& b) |
void | StreamerNVirtual(TBuffer& b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
virtual void | Terminate(Int_t status) |
Bool_t | TObject::TestBit(UInt_t f) const |
Int_t | TObject::TestBits(UInt_t f) const |
static TProofServ* | This() |
virtual void | TObject::UseCurrentStyle() |
virtual void | TObject::Warning(const char* method, const char* msgfmt) const |
const char* | TApplication::WorkingDirectory() const |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const |
static Int_t | TQObject::CheckConnectArgs(TQObject* sender, TClass* sender_class, const char* signal, TClass* receiver_class, const char* slot) |
static void | TApplication::Close(TApplication* app) |
static Bool_t | TQObject::ConnectToClass(TQObject* sender, const char* signal, TClass* receiver_class, void* receiver, const char* slot) |
static Bool_t | TQObject::ConnectToClass(const char* sender_class, const char* signal, TClass* receiver_class, void* receiver, const char* slot) |
virtual void | DeletePlayer() |
virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
static void | ErrorHandler(Int_t level, Bool_t abort, const char* location, const char* msg) |
virtual void* | TQObject::GetSender() |
virtual const char* | TQObject::GetSenderClassName() const |
virtual void | HandleArchive(TMessage* mess) |
virtual Int_t | HandleCache(TMessage* mess) |
virtual void | HandleCheckFile(TMessage* mess) |
virtual Int_t | HandleDataSets(TMessage* mess) |
virtual void | HandleLibIncPath(TMessage* mess) |
virtual void | HandleProcess(TMessage* mess) |
virtual void | HandleQueryList(TMessage* mess) |
virtual void | HandleRemove(TMessage* mess) |
virtual void | HandleRetrieve(TMessage* mess) |
virtual void | HandleSocketInputDuringProcess() |
virtual void | HandleWorkerLists(TMessage* mess) |
virtual void | TApplication::Help(const char* line) |
virtual void | TApplication::LoadGraphicsLibs() |
virtual void | TApplication::MakeBatch() |
virtual void | MakePlayer() |
void | TObject::MakeZombie() |
static TApplication* | TApplication::Open(const char* url, Int_t debug, const char* script) |
static Int_t | TApplication::ParseRemoteLine(const char* ln, TString& hostdir, TString& user, Int_t& dbg, TString& script) |
virtual Long_t | TApplication::ProcessRemote(const char* line, Int_t* error = 0) |
virtual void | SetShutdownTimer(Bool_t, Int_t) |
void | TApplication::SetSignalHandler(TSignalHandler* sh) |
virtual Int_t | Setup() |
Int_t | SetupCommon() |
void | AddLogFile(TProofQueryResult* pq) |
Int_t | ApplyMaxQueries() |
Int_t | CatMotd() |
Int_t | CleanupQueriesDir() |
Int_t | CleanupSession(const char* sessiontag) |
void | FinalizeQuery(TProofQueryResult* pq) |
Int_t | GetPriority() |
TProofQueryResult* | LocateQuery(TString queryref, Int_t& qry, TString& qdir) |
Int_t | LockSession(const char* sessiontag, TProofLockPath** lck) |
TProofQueryResult* | MakeQueryResult(Long64_t nentries, const char* opt, TList* inl, Long64_t first, TDSet* dset, const char* selec, TObject* elist) |
Int_t | OldAuthSetup(TString& wconf) |
void | RedirectOutput() |
void | RemoveQuery(const char* queryref) |
void | RemoveQuery(TQueryResult* qr, Bool_t soft = kFALSE) |
void | SaveQuery(TQueryResult* qr, const char* fout = 0) |
void | ScanPreviousQueries(const char* dir) |
void | SetQueryRunning(TProofQueryResult* pq) |
Int_t | UnloadPackage(const char* package) |
Int_t | UnloadPackages() |
enum EQueryAction { | kQueryOK | |
kQueryModify | ||
kQueryStop | ||
}; | ||
enum TApplication::EStatusBits { | kProcessRemotely | |
}; | ||
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
TApplication* | TApplication::fAppRemote | Current remote application, if defined |
TList* | TQObject::fListOfConnections | ! list of connections to this object |
TList* | TQObject::fListOfSignals | ! list of signals from this object |
Bool_t | TQObject::fSignalsBlocked | ! flag used for suppression of signals |
static Bool_t | TQObject::fgAllSignalsBlocked | flag used for suppression of all signals |
static TList* | TApplication::fgApplications | List of available applications |
TString | fArchivePath | default archive path |
TString | fCacheDir | directory containing cache of user files |
TProofLockPath* | fCacheLock | cache dir locker |
TStopwatch | fCompute | measures time spend processing a packet |
TString | fConfDir | directory containing cluster config information |
TString | fConfFile | file containing config information |
Float_t | fCpuTime | CPU time spent executing commands |
TString | fDataSetDir | directory containing info about known data sets |
TProofDataSetManager* | fDataSetManager | dataset manager |
Int_t | fDrawQueries | number of draw queries processed |
TList* | fEnabledPackages | list of enabled packages |
Bool_t | fEndMaster | true for a master in direct contact only with workers |
THashList* | fGlobalPackageDirList | list of directories containing global packages libs |
TString | fGroup | group the user belongs to |
Int_t | fGroupId | slave unique id in the active slave group |
Int_t | fGroupPriority | priority of group the user belongs to (0 - 100) |
Int_t | fGroupSize | size of the active slave group |
Long64_t | fHWMBoxSize | High-Water-Mark on the sandbox size |
Bool_t | fIdle | TRUE if idle |
TString | fImage | image name of the session |
Int_t | fInflateFactor | Factor in 1/1000 to inflate the CPU time |
Bool_t | fInterrupt | if true macro execution will be stopped |
Int_t | fKeptQueries | number of queries fully in memory and in dir |
TStopwatch | fLatency | measures latency of packet requests |
FILE* | fLogFile | log file |
Int_t | fLogFileDes | log file descriptor |
Int_t | fLogLevel | debug logging level |
Bool_t | fMasterServ | true if we are a master server |
Long64_t | fMaxBoxSize | Max size of the sandbox |
Int_t | fMaxQueries | Max number of queries fully kept |
Int_t | fNcmd | command history number |
TString | fOrdinal | slave ordinal number |
TString | fPackageDir | directory containing packages and user libs |
TProofLockPath* | fPackageLock | package dir locker |
TVirtualProofPlayer* | fPlayer | actual player |
TString | fPrefix | Prefix identifying the node |
TList* | fPreviousQueries | list of TProofQueryResult objects from previous sections |
TProof* | fProof | PROOF talking to slave servers |
Int_t | fProtocol | protocol version number |
TList* | fQueries | list of TProofQueryResult objects |
TString | fQueryDir | directory containing query results and status |
TProofLockPath* | fQueryLock | query dir locker |
Float_t | fRealTime | real time spent executing commands |
Bool_t | fRealTimeLog | TRUE if log messages should be send back in real-time |
Int_t | fSeqNum | sequential number of last processed query |
TString | fService | service we are running, either "proofserv" or "proofslave" |
TString | fSessionDir | directory containing session dependent files |
TString | fSessionTag | tag for the session |
TTimer* | fShutdownTimer | Timer used for delayed session shutdown |
TMutex* | fShutdownTimerMtx | Actions on the timer must be atomic |
Bool_t | fShutdownWhenIdle | If TRUE, start shutdown delay countdown when idle |
TSocket* | fSocket | socket connection to client |
TString | fUser | user as which we run |
TList* | fWaitingQueries | list of TProofQueryResult wating to be processed |
TString | fWorkDir | directory containing all proof related info |
static Bool_t | fgLogToSysLog | true if logs should be sent to syslog too |
Main constructor. Create an application environment. The TProofServ environment provides an eventloop via inheritance of TApplication. Actual server creation work is done in CreateServer() to allow overloading.
Finalize the server setup. If master, create the TProof instance to talk to the worker or submaster nodes. Return 0 on success, -1 on error
Get object with name "name;cycle" (e.g. "aap;2") from master or client. This method is called by TDirectory::Get() in case the object can not be found locally.
Get next range of entries to be processed on this server.
Get and handle command line options. Fixed format: "proofserv"|"proofslave" <confdir>
Handle messages that might arrive during processing while being in HandleSocketInput(). This avoids recursive calls into HandleSocketInput().
Redirect stdout to a log file. This log file will be flushed to the client or master after each command.
Receive a file, either sent by a client or a master server. If bin is true it is a binary file, other wise it is an ASCII file and we need to check for Windows \r tokens. Returns -1 in case of error, 0 otherwise.
Send log file to master. If start > -1 send only bytes in the range from start to end, if end <= start send everything from start.
Removes link to package in working directory, removes entry from include path, removes entry from enabled package list, does not currently remove entry from interpreter include path. Returns -1 in case of error, 0 otherwise.
Common part (between TProofServ and TXProofServ) of the setup phase. Return 0 on success, -1 on error
Static function returning pointer to global object gProofServ. Mainly for use via CINT, where the gProofServ symbol might be deleted from the symbol table.
Setup authentication related stuff for old versions. Provided for backward compatibility.
Create a TProofQueryResult instance for this query.
Add part of log file concerning TQueryResult pq to its macro container.
Final steps after Process() to complete the TQueryResult instance.
Scan the queries directory for the results of previous queries. The headers of the query results found are loaded in fPreviousQueries. The full query result can be retrieved via TProof::Retrieve.
Scan the queries directory and remove the oldest ones (and relative dirs, if empty) in such a way only fMaxQueries are kept. Return 0 on success, -1 in case of problems
Try locking query area of session tagged sessiontag. The id of the locking file is returned in fid and must be unlocked via UnlockQueryFile(fid).
Save current status of query 'qr' to file name fout. If fout == 0 (default) use the default name.
Remove everything about query qr. If soft = TRUE leave a track in memory with the relevant info
Locate query referenced by queryref. Return pointer to instance in memory, if any, or 0. Fills qdir with the query specific directory and qry with the query number for queries processed by this session.
The PROOF error handler function. It prints the message on stderr and if abort is set it aborts the application.
Retrieve any files (source and binaries) related to 'macro' from the cache directory. Returns 0 on success, -1 otherwise
Copy files related to 'macro' to the cache directory. Action depends on 'opt': opt = 0 copy 'macro' to cache and delete from cache any binary related to name; e.g. if macro = bla.C, the binaries are bla_C.so, bla_C.rootmap, ... opt = 1 copy the binaries related to macro to the cache Returns 0 on success, -1 otherwise
Get the processing priority for the group the user belongs too. This prioroty is a number (0 - 100) determined by a scheduler (third party process) based on some basic priority the group has, e.g. we might want to give users in a specific group (e.g. promptana) a higher priority than users in other groups, and on the analysis of historical logging data (i.e. usage of CPU by the group in a previous time slot, as recorded in TPerfStats::WriteQueryLog()). Currently the group priority is obtained by a query in a SQL DB table proofpriority, which has the format: CREATE TABLE proofpriority ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, group VARCHAR(32) NOT NULL, priority INT )
Reposition the read pointer in the log file to the very end. This allows to "hide" useful debug messages durign normal operations while preserving the possibility to have them in case of problems.