5 #include "AliESDEvent.h"
16 #define WINDOWS_WIDTH 500
17 #define WINDOWS_HEIGHT 350
42 TGMainFrame(gClient->GetRoot(), 400, 400),
49 fMaxOccupationLabel(0),
50 fRemoveEventsLabel(0),
51 fEventsInChunkLabel(0),
56 fCommunicationThread(0),
57 fCommunicationSocket(CLIENT_COMMUNICATION_REQ),
58 fServerSocket(SERVER_COMMUNICATION_REQ),
76 cout<<
"ADMIN -- AliStorageAdministratorPanel descructor called";
77 cout<<
" --- OK"<<endl;
99 struct clientRequestStruct *request =
new struct clientRequestStruct;
100 request->messageType = option;
106 cout<<
"ADMIN -- CLIENT IS DOWN"<<endl;
111 struct clientRequestStruct *responseParams = NULL;
113 if(option == REQUEST_GET_PARAMS)
123 case REQUEST_CONNECTION:
126 case REQUEST_RECEIVING:
132 case REQUEST_CURRENT_SIZE:
135 case REQUEST_GET_PARAMS:
148 if(request){
delete request;}
153 SetCleanup(kDeepCleanup);
156 AddFrame(
new TGHorizontal3DLine(
this),
157 new TGLayoutHints(kLHintsNormal | kLHintsExpandX));
170 SetWindowName(
"ALICE Storage Manager");
179 TGHorizontalFrame *threadsFrame =
new TGHorizontalFrame(
this);
182 TGCompositeFrame *clientThreadFrame =
new TGCompositeFrame(threadsFrame,
CLIENT_FRAME);
184 fDataLabel =
new TGLabel(clientThreadFrame,
"======Waiting======");
185 fSavingLabel =
new TGLabel(clientThreadFrame,
"======Waiting======");
187 fMaxSizeLabel =
new TGLabel(clientThreadFrame,
"==========Waiting=========");
192 clientThreadFrame->AddFrame(
new TGLabel(clientThreadFrame,
193 "ALICE Storage Client"),
194 new TGLayoutHints(kLHintsCenterX));
197 clientThreadFrame->AddFrame(
new TGLabel(clientThreadFrame,
199 new TGLayoutHints(kLHintsCenterX));
201 new TGLayoutHints(kLHintsCenterX));
204 clientThreadFrame->AddFrame(
new TGLabel(clientThreadFrame,
206 new TGLayoutHints(kLHintsCenterX));
208 new TGLayoutHints(kLHintsCenterX));
211 clientThreadFrame->AddFrame(
new TGLabel(clientThreadFrame,
213 new TGLayoutHints(kLHintsCenterX));
215 new TGLayoutHints(kLHintsCenterX));
218 clientThreadFrame->AddFrame(
new TGLabel(clientThreadFrame,
219 "Current storage size:"),
220 new TGLayoutHints(kLHintsCenterX));
222 new TGLayoutHints(kLHintsCenterX));
225 clientThreadFrame->AddFrame(
new TGLabel(clientThreadFrame,
226 "Max storage size:"),
227 new TGLayoutHints(kLHintsCenterX));
229 new TGLayoutHints(kLHintsCenterX));
232 clientThreadFrame->AddFrame(
new TGLabel(clientThreadFrame,
233 "Max occupation percent:"),
234 new TGLayoutHints(kLHintsCenterX));
236 new TGLayoutHints(kLHintsCenterX));
239 clientThreadFrame->AddFrame(
new TGLabel(clientThreadFrame,
240 "Remove events percentage:"),
241 new TGLayoutHints(kLHintsCenterX));
243 new TGLayoutHints(kLHintsCenterX));
246 clientThreadFrame->AddFrame(
new TGLabel(clientThreadFrame,
247 "Number of events in chunk:"),
248 new TGLayoutHints(kLHintsCenterX));
250 new TGLayoutHints(kLHintsCenterX));
253 TGCompositeFrame *serverThreadFrame =
new TGCompositeFrame(threadsFrame,
SERVER_FRAME);
254 serverThreadFrame->AddFrame(
new TGLabel(serverThreadFrame,
255 "ALICE Storage Server"),
256 new TGLayoutHints(kLHintsCenterX));
259 threadsFrame->AddFrame(clientThreadFrame,
260 new TGLayoutHints(kLHintsLeft | kLHintsExpandX));
261 threadsFrame->AddFrame(
new TGVertical3DLine(threadsFrame),
262 new TGLayoutHints(kLHintsNormal | kLHintsExpandY));
263 threadsFrame->AddFrame(serverThreadFrame,
264 new TGLayoutHints(kLHintsRight | kLHintsExpandX));
267 AddFrame(threadsFrame,
new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
273 TGPopupMenu *clientPopup =
new TGPopupMenu(fClient->GetRoot());
275 clientPopup->Associate(
this);
278 TGPopupMenu *serverPopup =
new TGPopupMenu(fClient->GetRoot());
285 serverPopup->Associate(
this);
288 TGMenuBar *menuBar =
new TGMenuBar(
this,1,1,kHorizontalFrame);
289 menuBar->AddPopup(
"&Client",clientPopup,
290 new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
291 menuBar->AddPopup(
"&Server", serverPopup,
292 new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0));
294 AddFrame(menuBar,
new TGLayoutHints(kLHintsTop | kLHintsExpandX));
300 switch (GET_MSG(msg))
304 switch (GET_SUBMSG(msg))
336 if(listEventsWindow){cout<<
"List events window created"<<endl;}
343 if(markEventWindow){cout<<
"Mark event window created"<<endl;}
349 struct serverRequestStruct *requestMessage =
new struct serverRequestStruct;
350 requestMessage->messageType = REQUEST_LIST_EVENTS;
355 requestMessage->runNumber[0]=0;
356 requestMessage->runNumber[1]=999999;
357 requestMessage->eventNumber[0]=0;
358 requestMessage->eventNumber[1]=999999;
359 requestMessage->marked[0]=1;
360 requestMessage->marked[1]=0;
361 requestMessage->multiplicity[0]=1;
362 requestMessage->multiplicity[1]=999999;
363 strcpy(requestMessage->system[0],
"p-p");
364 strcpy(requestMessage->system[1],
"A-A");
368 vector<serverListStruct> *tmpVector;
370 vector<serverListStruct> &receivedList = *tmpVector;
372 cout<<
"ADMIN PANEL -- received list of marked events:"<<receivedList.size()<<endl;
377 for(i=0;i<receivedList.size();i++)
379 cout<<
"marking:"<<i<<endl;
380 struct serverRequestStruct *requestMessage =
new struct serverRequestStruct;
381 requestMessage->messageType = REQUEST_MARK_EVENT;
385 requestMessage->eventsRunNumber = receivedList[i].runNumber;
386 requestMessage->eventsEventNumber = receivedList[i].eventNumber;
392 delete requestMessage;
393 if(!response){failCounter++;}
395 cout<<
"Tried to mark: "<<i<<
"events"<<endl;
396 cout<<
"Could not mark: "<<failCounter<<
" events"<<endl;
414 int runNumber=197669;
417 struct serverRequestStruct *requestMessage =
new struct serverRequestStruct;
419 requestMessage->eventsRunNumber = runNumber;
420 requestMessage->eventsEventNumber = eventNumber;
421 requestMessage->messageType = REQUEST_GET_EVENT;
425 AliESDEvent *resultEvent = NULL;
430 cout<<
"ADMIN -- received event. Run no:"<<resultEvent->GetRunNumber()<<
"\tEvent no in file:"<<resultEvent->GetEventNumberInFile()<<endl;
434 cout<<
"ADMIN -- received no event"<<endl;
442 int runNumber=197669;
445 struct serverRequestStruct *requestMessage =
new struct serverRequestStruct;
447 requestMessage->eventsRunNumber = runNumber;
448 requestMessage->eventsEventNumber = eventNumber;
449 requestMessage->messageType = REQUEST_GET_NEXT_EVENT;
453 AliESDEvent* resultEvent = NULL;
457 cout<<
"ADMIN -- received event. Run no:"<<resultEvent->GetRunNumber()<<
"\tEvent no in file:"<<resultEvent->GetEventNumberInFile()<<endl;
461 cout<<
"ADMIN -- received no event"<<endl;
468 struct serverRequestStruct *requestMessage =
new struct serverRequestStruct;
469 requestMessage->messageType = REQUEST_GET_LAST_EVENT;
472 AliESDEvent* resultEvent = NULL;
477 cout<<
"ADMIN -- received event. Run no:"<<resultEvent->GetRunNumber()<<
"\tEvent no in file:"<<resultEvent->GetEventNumberInFile()<<endl;
481 cout<<
"ADMIN -- received no event"<<endl;
487 cout<<
"ADMIN -- Quiting ALICE Storage Admin Panel"<<endl;
501 label->SetText(
"Waiting");
502 label->SetTextColor(kBlack);
505 label->SetText(
"OK");
506 label->SetTextColor(kBlack);
509 label->SetText(
"ERROR");
510 label->SetTextColor(kBlack);
513 label->SetText(
"CLIENT IS DOWN");
514 label->SetTextColor(kRed);
518 gClient->HandleInput();
531 label->SetText(Form(
"%lu B (%.2f MB)",value,(
float)value/(1000.*1000.)));
534 label->SetText(Form(
"%d %%",(
int)value));
537 label->SetText(Form(
"%d",(
int)value));
541 label->SetTextColor(kBlack);
542 gClient->HandleInput();
TGLabel * fConnectionLabel
void SetLabelValue(TGLabel *label, long value, int option)
AliZMQManager * fEventManager
void Setup(storageSockets socket, int maxStorageSize, int maxOccupation, int removeEvents, int eventsInChunk)
void onServerMarkAllEvents()
TGLabel * fRemoveEventsLabel
storageSockets fServerSocket
void SetLabel(TGLabel *label, int option)
static AliZMQManager * GetInstance()
storageSockets fCommunicationSocket
ClassImp(AliStorageAdministratorPanel)
AliStorageAdministratorPanel()
virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t)
static AliStorageAdministratorPanelSetStorageParams * GetInstance()
void onServerGetLastEvent()
TGLabel * fCurrentSizeLabel
virtual ~AliStorageAdministratorPanel()
void onServerListEvents()
void CreateSocket(storageSockets socket)
bool Send(std::vector< serverListStruct > list, storageSockets socket)
TGLabel * fEventsInChunkLabel
TGLabel * fMaxOccupationLabel
static AliStorageAdministratorPanelListEvents * GetInstance()
static void Dispatch(void *arg)
void CheckClientState(int option)
void onServerGetNextEvent()
TThread * fCommunicationThread
static AliStorageAdministratorPanelMarkEvent * GetInstance()
bool Get(std::vector< serverListStruct > *&result, storageSockets socket)