00001 #include <cstdlib>
00002 #include <unistd.h>
00003 #include "TROOT.h"
00004 #include "TSystem.h"
00005 #include "MessageService/MsgService.h"
00006 #include "Dispatcher/DDSChildServer.h"
00007
00008 TROOT root("ddschildserver","MINOS Data Dispatcher System childserver");
00009 CVSID("$Id: ddschildserver.cc,v 1.7 2009/02/28 21:46:12 gmieg Exp $");
00010
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00030
00031 int main(int argc, char **argv) {
00032
00033 pid_t pid = gSystem -> GetPid();
00034
00035
00036 gROOT -> SetBatch(kTRUE);
00037
00038
00039
00040
00041 if (argc < 5) {
00042 cerr << pid << ":Error: ddschildserver called with missing argument.\n"
00043 << "Usage:\n"
00044 << "ddschildserver <socketdescriptor> <niceinc> <loglevel> <maxinactive>."
00045 << endl;
00046 return 1;
00047 }
00048
00049
00050 Int_t sockfd = atoi(argv[1]);
00051
00052 Int_t niceincr = atoi(argv[2]);
00053 nice(niceincr);
00054
00055
00056 Int_t logLevel = atoi(argv[3]);
00057 MsgStream* msdds = MsgService::Instance() -> GetStream("DDS");
00058 MsgStream* msper = MsgService::Instance() -> GetStream("Per");
00059 msdds -> SetLogLevel(logLevel);
00060
00061 for (int i = logLevel; i < Msg::kNLogLevel; i++) {
00062 msdds -> AddFormat(i,Msg::kTime);
00063 msper -> AddFormat(i,Msg::kTime);
00064 }
00065 msdds-> RemoveFormat(Msg::kWarning,Msg::kName+Msg::kFile+Msg::kLine);
00066 msdds-> RemoveFormat(Msg::kInfo,Msg::kName+Msg::kFile+Msg::kLine);
00067 msdds-> RemoveFormat(Msg::kDebug,Msg::kName+Msg::kFile+Msg::kLine);
00068 msdds-> RemoveFormat(Msg::kVerbose,Msg::kName+Msg::kFile+Msg::kLine);
00069
00070
00071 Int_t maxinactive = atoi(argv[4]);
00072
00073
00074 DDSChildServer *cs = new DDSChildServer(sockfd,maxinactive);
00075
00076 if (! cs->IsValid() ) {
00077
00078 MSG("DDS",Msg::kFatal) << "CS_" << pid
00079 << ": Error in creation of child server. Program terminating." <<endl;
00080 return 1;
00081 }
00082
00083 TDatime starttime;
00084 MSG("DDS",Msg::kInfo) << "CS_" << pid << ": child server created on "
00085 << starttime.AsString() << endl;
00086 MSG("DDS",Msg::kInfo) << cs << endl;
00087
00088
00089
00090
00091 Int_t rc = cs -> Run();
00092
00093
00094 TDatime endtime;
00095 MSG("DDS",Msg::kInfo) << "CS_" << pid << ": child server shutdown on " << endtime.AsString() << endl;
00096
00097
00098 delete cs;
00099
00100 return rc;
00101
00102 }
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120