]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STORAGE/AliStorageAdministratorPanelListEvents.cxx
fixed include in AliStorageAdministratorPanel.cxx
[u/mrichter/AliRoot.git] / STORAGE / AliStorageAdministratorPanelListEvents.cxx
CommitLineData
5eb34a26 1#include "AliStorageAdministratorPanelListEvents.h"
2
3#include <iostream>
4#include <sstream>
5#include <vector>
6
7#include <TG3DLine.h>
8#include <TGButton.h>
9#include <TGFrame.h>
10
11#include "zmq.hpp"
12
13using namespace std;
14using namespace zmq;
15
16AliStorageAdministratorPanelListEvents *AliStorageAdministratorPanelListEvents::fInstance=0;
17
18ClassImp(AliStorageAdministratorPanelListEvents);
19
20#define WINDOWS_WIDTH 400
21#define WINDOWS_HEIGHT 500
22
23enum BUTTON{
24 BUTTON_CLOSE=1,
25 BUTTON_GET_LIST,
26 BUTTON_CHECK_PP,
27 BUTTON_CHECK_PBPB,
28 BUTTON_CHECK_TEMP,
29 BUTTON_CHECK_PERM,
30 BUTTON_MARK_EVENT
31};
32
33enum TEXTENTRY{
34 TEXTENTRY_RUN_MIN=1,
35 TEXTENTRY_RUN_MAX,
36 TEXTENTRY_EVENT_MIN,
37 TEXTENTRY_EVENT_MAX,
38 TEXTENTRY_MULTIPLICITY_MIN,
39 TEXTENTRY_MULTIPLICITY_MAX
40};
41
42AliStorageAdministratorPanelListEvents::AliStorageAdministratorPanelListEvents() :
43 TGMainFrame(gClient->GetRoot(),400,400),
44 fStatusLabel(0),
45 fRunNumberMinEntry(0),
46 fRunNumberMaxEntry(0),
47 fEventNumberMinEntry(0),
48 fEventNumberMaxEntry(0),
49 fMultiplicityMinEntry(0),
50 fMultiplicityMaxEntry(0),
51 fProtonProtonCheckButton(0),
52 fLeadLeadCheckButton(0),
53 fTempCheckButton(0),
54 fPermCheckButton(0),
55 fEventsList(0),
56 fEventsListVector(0),
57 fServerSocket(0),
58 fEventManager(0)
59{
60 fEventManager = new AliStorageEventManager();
61 InitWindow();
62}
63
64AliStorageAdministratorPanelListEvents::~AliStorageAdministratorPanelListEvents()
65{
66 cout<<"ADMIN PANEL -- List events descructor called";
67// DestroyWindow();
68 cout<<" --- OK"<<endl;
69}
70
71AliStorageAdministratorPanelListEvents* AliStorageAdministratorPanelListEvents::GetInstance()
72{
73 if(!fInstance){fInstance = new AliStorageAdministratorPanelListEvents();}
74 return fInstance;
75}
76
77void AliStorageAdministratorPanelListEvents::SetSocket(socket_t *socket)
78{
79 fServerSocket = socket;
80}
81
82void AliStorageAdministratorPanelListEvents::InitWindow()
83{
84 SetCleanup(kDeepCleanup);
85
86 //min run number
87 AddFrame(new TGLabel(this,"Minimum run number:"),new TGLayoutHints(kLHintsLeft));
88
89 fRunNumberMinEntry = new TGNumberEntry(this,
90 0,
91 6,
92 TEXTENTRY_RUN_MIN,
93 TGNumberFormat::kNESInteger,
94 TGNumberFormat::kNEAPositive,
95 TGNumberFormat::kNELNoLimits);
96 AddFrame(fRunNumberMinEntry,new TGLayoutHints(kLHintsLeft));
97
98 //max run number
99 AddFrame(new TGLabel(this,"Maximum run number:"),new TGLayoutHints(kLHintsLeft));
100
101 fRunNumberMaxEntry = new TGNumberEntry(this,
102 999999,
103 6,
104 TEXTENTRY_RUN_MAX,
105 TGNumberFormat::kNESInteger,
106 TGNumberFormat::kNEAPositive,
107 TGNumberFormat::kNELNoLimits);
108 AddFrame(fRunNumberMaxEntry,new TGLayoutHints(kLHintsLeft));
109
110 //min event number
111 AddFrame(new TGLabel(this,"Minimum event number:"),new TGLayoutHints(kLHintsLeft));
112
113 fEventNumberMinEntry = new TGNumberEntry(this,
114 0,
115 6,
116 TEXTENTRY_EVENT_MIN,
117 TGNumberFormat::kNESInteger,
118 TGNumberFormat::kNEAPositive,
119 TGNumberFormat::kNELNoLimits);
120 AddFrame(fEventNumberMinEntry,new TGLayoutHints(kLHintsLeft));
121
122 //max event number
123 AddFrame(new TGLabel(this,"Maximum event number:"),new TGLayoutHints(kLHintsLeft));
124
125 fEventNumberMaxEntry = new TGNumberEntry(this,
126 99999,
127 6,
128 TEXTENTRY_EVENT_MAX,
129 TGNumberFormat::kNESInteger,
130 TGNumberFormat::kNEAPositive,
131 TGNumberFormat::kNELNoLimits);
132 AddFrame(fEventNumberMaxEntry,new TGLayoutHints(kLHintsLeft));
133
134 //min multiplicity
135 AddFrame(new TGLabel(this,"Minimum multiplicity:"),new TGLayoutHints(kLHintsLeft));
136
137 fMultiplicityMinEntry = new TGNumberEntry(this,
138 0,
139 6,
140 TEXTENTRY_MULTIPLICITY_MIN,
141 TGNumberFormat::kNESInteger,
142 TGNumberFormat::kNEAPositive,
143 TGNumberFormat::kNELNoLimits);
144 AddFrame(fMultiplicityMinEntry,new TGLayoutHints(kLHintsLeft));
145
146 //max multiplicity
147 AddFrame(new TGLabel(this,"Maximum multiplicity:"),new TGLayoutHints(kLHintsLeft));
148
149 fMultiplicityMaxEntry = new TGNumberEntry(this,
150 9999,
151 6,
152 TEXTENTRY_MULTIPLICITY_MAX,
153 TGNumberFormat::kNESInteger,
154 TGNumberFormat::kNEAPositive,
155 TGNumberFormat::kNELNoLimits);
156 AddFrame(fMultiplicityMaxEntry,new TGLayoutHints(kLHintsLeft));
157
158 //p-p check button
159 AddFrame(new TGLabel(this,"System:"),new TGLayoutHints(kLHintsLeft));
160 fProtonProtonCheckButton = new TGCheckButton(this,"p-p",BUTTON_CHECK_PP);
161 fProtonProtonCheckButton->SetOn();
162 AddFrame(fProtonProtonCheckButton,new TGLayoutHints(kLHintsLeft));
163
164 //Pb-Pb check button
165 fLeadLeadCheckButton = new TGCheckButton(this,"Pb-Pb",BUTTON_CHECK_PBPB);
166 fLeadLeadCheckButton->SetOn();
167 AddFrame(fLeadLeadCheckButton,new TGLayoutHints(kLHintsLeft));
168
169 //temp check button
170 AddFrame(new TGLabel(this,"Storage type:"),new TGLayoutHints(kLHintsLeft));
171 fTempCheckButton = new TGCheckButton(this,"Temporary",BUTTON_CHECK_TEMP);
172 fTempCheckButton->SetOn();
173 AddFrame(fTempCheckButton,new TGLayoutHints(kLHintsLeft));
174
175 //perm check button
176 fPermCheckButton = new TGCheckButton(this,"Permanent",BUTTON_CHECK_PERM);
177 fPermCheckButton->SetOn();
178 AddFrame(fPermCheckButton,new TGLayoutHints(kLHintsLeft));
179
180 // status label
181 fStatusLabel = new TGLabel(this,"");
182 AddFrame(fStatusLabel,new TGLayoutHints(kLHintsExpandX | kLHintsLeft));
183
184 //buttons
185 AddFrame(new TGTextButton(this,"Close",BUTTON_CLOSE),
186 new TGLayoutHints(kLHintsLeft));
187
188 AddFrame(new TGTextButton(this,"Get event's list",BUTTON_GET_LIST),
189 new TGLayoutHints(kLHintsRight));
190
191 AddFrame(new TGTextButton(this,"Mark selected event",BUTTON_MARK_EVENT),
192 new TGLayoutHints(kLHintsRight));
193
194
195 //event's list
196 fEventsList = new TGListBox(this,0);
197 fEventsList->AddEntry(new TGString("Run Event System Mult Marked"),0);
198 AddFrame(fEventsList,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
199
200 SetWindowName("List Events");
201 MapSubwindows();
202 Resize(WINDOWS_WIDTH,WINDOWS_HEIGHT);
203 MapWindow();
204}
205
206
207
208
209void AliStorageAdministratorPanelListEvents::onGetListButton()
210{
211//prepare and send request message
212 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
213 struct listRequestStruct list;
214
215 //get listing parameters from somwhere
216 list.runNumber[0]=fRunNumberMinEntry->GetIntNumber();
217 list.runNumber[1]=fRunNumberMaxEntry->GetIntNumber();
218 list.eventNumber[0]=fEventNumberMinEntry->GetIntNumber();
219 list.eventNumber[1]=fEventNumberMaxEntry->GetIntNumber();
220 if(fTempCheckButton->GetState()==1)
221 {
222 list.marked[0]=0;
223 }
224 else
225 {
226 list.marked[0]=-1;
227 }
228 if(fPermCheckButton->GetState()==1)
229 {
230 list.marked[1]=1;
231 }
232 else
233 {
234 list.marked[1]=-1;
235 }
236 list.multiplicity[0]=fMultiplicityMinEntry->GetIntNumber();
237 list.multiplicity[1]=fMultiplicityMaxEntry->GetIntNumber();
238 if(fProtonProtonCheckButton->GetState()==1)
239 {
240 strcpy(list.system[0],"p-p");
241 }
242 else
243 {
244 strcpy(list.system[0],"");
245 }
246 if(fLeadLeadCheckButton->GetState()==1)
247 {
248 strcpy(list.system[1],"Pb-Pb");
249 }
250 else
251 {
252 strcpy(list.system[1],"");
253 }
254
255 requestMessage->messageType = REQUEST_LIST_EVENTS;
256 requestMessage->list = list;
257
258 fEventManager->Send(requestMessage,fServerSocket);
259
260 fEventsList->RemoveAll();
261 fEventsList->AddEntry(new TGString("Run Event System Mult Marked"),0);
262
263 vector<serverListStruct> receivedList = fEventManager->GetServerListVector(fServerSocket);
264
265 cout<<"PANEL:"<<receivedList[0].runNumber<<endl;
266 cout<<"VECTOR SIZE:"<<receivedList.size()<<endl;
267
268//do something with list of maching events
269 cout<<"Received list of perm events"<<endl;
270
271 for(unsigned int i=0;i<receivedList.size();i++)
272 {
273 fEventsList->InsertEntry(Form("%d %d %s %d %d ",
274 receivedList[i].runNumber,
275 receivedList[i].eventNumber,
276 receivedList[i].system,
277 receivedList[i].multiplicity,
278 receivedList[i].marked),i+1,i);
279
280 cout<<receivedList[i].runNumber<<receivedList[i].eventNumber<<endl;
281
282 }
283
284 fEventsListVector = receivedList;
285
286 gClient->HandleInput();
287 gClient->NeedRedraw(fEventsList, kTRUE);
288 gClient->HandleInput();
289 MapSubwindows();
290 MapWindow();
291 Layout();
292}
293
294
295void AliStorageAdministratorPanelListEvents::onMarkButton()
296{
297 int runNumber;
298 int eventNumber;
299
300 //get run and event number from selected row
301 int selectedEventNumber = fEventsList->GetSelected()-1;
302
303 cout<<"SELECTED:"<<selectedEventNumber<<endl;
304
305 if(selectedEventNumber<0)return;
306
307 runNumber=fEventsListVector[selectedEventNumber].runNumber;
308 eventNumber=fEventsListVector[selectedEventNumber].eventNumber;
309
310 struct serverRequestStruct *requestMessage = new struct serverRequestStruct;
311 struct eventStruct mark;
312 mark.runNumber = runNumber;
313 mark.eventNumber = eventNumber;
314 requestMessage->messageType = REQUEST_MARK_EVENT;
315 requestMessage->event = mark;
316
317 fEventManager->Send(requestMessage,fServerSocket);
318
319 message_t *response = new message_t();
320 fServerSocket->recv(response);
321 char *result = (char*)response->data();
322 //if(response)delete response;
323
324 if(!strcmp("true",result))
325 {
326 fStatusLabel->SetText("Event marked");
327 cout<<"ADMIN PANEL -- Event marked succesfully"<<endl;
328 }
329 else
330 {
331 fStatusLabel->SetText("Couldn't mark this event");
332 cout<<"ADMIN PANEL -- Could not matk event"<<endl;
333 }
334}
335
336void AliStorageAdministratorPanelListEvents::onCloseButton(){onExit();}
337void AliStorageAdministratorPanelListEvents::CloseWindow(){onExit();}
338
339void AliStorageAdministratorPanelListEvents::onExit()
340{
341 cout<<"Quiting list events";
342 if(fInstance){delete fInstance;fInstance=0;}
343 cout<<" -- OK"<<endl;
344}
345
346Bool_t AliStorageAdministratorPanelListEvents::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
347{
348 switch (GET_MSG(msg))
349 {
350 case kC_COMMAND:
351 switch (GET_SUBMSG(msg))
352 {
353 case kCM_BUTTON:
354 switch(parm1)
355 {
356 case BUTTON_CLOSE:onCloseButton();break;
357 case BUTTON_GET_LIST:onGetListButton();break;
358 case BUTTON_MARK_EVENT:onMarkButton();break;
359 default:break;
360 }
361 break;
362 default:break;
363 }
364 break;
365 default:break;
366 }
367
368 return false;
369}