Merging STORAGE-dev to master
[u/mrichter/AliRoot.git] / MONITOR / alistoragemanager / AliStorageAdministratorPanelSetStorageParams.cxx
CommitLineData
5eb34a26 1#include "AliStorageAdministratorPanelSetStorageParams.h"
2#include "AliStorageTypes.h"
3
4#include <iostream>
5eb34a26 5
6#include <TGFrame.h>
7#include <TGButton.h>
8
9using namespace std;
5eb34a26 10
11AliStorageAdministratorPanelSetStorageParams *AliStorageAdministratorPanelSetStorageParams::fInstance=0;
12
13ClassImp(AliStorageAdministratorPanelSetStorageParams);
14
15#define WINDOWS_WIDTH 200
16#define WINDOWS_HEIGHT 200
17
18enum BUTTON{
19 BUTTON_CLOSE=1,
20 BUTTON_SET
21};
22
23enum ENTRY{
24 ENTRY_STORAGE_SIZE=1,
25 ENTRY_OCCUPATION,
26 ENTRY_REMOVE,
27 ENTRY_EVENTS_CHUNK
28};
29
30AliStorageAdministratorPanelSetStorageParams::AliStorageAdministratorPanelSetStorageParams() :
31 TGMainFrame(gClient->GetRoot(), 400, 400),
32 fStatusLabel(0),
33 fMaxStorageSizeEntry(0),
34 fMaxOccupationEntry(0),
35 fRemoveEventsEntry(0),
36 fEventsInChunkEntry(0),
164d3d29 37 fClientSocket(CLIENT_COMMUNICATION_REQ),
5eb34a26 38 fEventManager(0)
39{
164d3d29 40 fEventManager = AliStorageEventManager::GetEventManagerInstance();
41 fEventManager->CreateSocket(fClientSocket);
5eb34a26 42 InitWindow();
43}
44
45AliStorageAdministratorPanelSetStorageParams::~AliStorageAdministratorPanelSetStorageParams(){}
46
47AliStorageAdministratorPanelSetStorageParams* AliStorageAdministratorPanelSetStorageParams::GetInstance()
48{
49 if(!fInstance){fInstance = new AliStorageAdministratorPanelSetStorageParams();}
50 return fInstance;
51}
52
164d3d29 53void AliStorageAdministratorPanelSetStorageParams::Setup(storageSockets socket, int maxStorageSize, int maxOccupation, int removeEvents, int eventsInChunk)
5eb34a26 54{
55 fClientSocket = socket;
56 fMaxStorageSizeEntry->SetIntNumber(maxStorageSize);
57 fMaxOccupationEntry->SetIntNumber(maxOccupation);
58 fRemoveEventsEntry->SetIntNumber(removeEvents);
59 fEventsInChunkEntry->SetIntNumber(eventsInChunk);
60}
61
62void AliStorageAdministratorPanelSetStorageParams::InitWindow()
63{
64 SetCleanup(kDeepCleanup);
65
66 // max storage size
67 AddFrame(new TGLabel(this,"Max storage size (MB):"),new TGLayoutHints(kLHintsLeft));
68
69 fMaxStorageSizeEntry = new TGNumberEntry(this,
70 0,
71 6,
72 ENTRY_STORAGE_SIZE,
73 TGNumberFormat::kNESInteger,
74 TGNumberFormat::kNEAPositive,
75 TGNumberFormat::kNELNoLimits);
76 AddFrame(fMaxStorageSizeEntry,new TGLayoutHints(kLHintsLeft));
77
78 // max occupation
79 AddFrame(new TGLabel(this,"Max occupation percent (%):"),new TGLayoutHints(kLHintsLeft));
80
81 fMaxOccupationEntry = new TGNumberEntry(this,
82 0,
83 6,
84 ENTRY_OCCUPATION,
85 TGNumberFormat::kNESInteger,
86 TGNumberFormat::kNEAPositive,
87 TGNumberFormat::kNELNoLimits);
88 AddFrame(fMaxOccupationEntry,new TGLayoutHints(kLHintsLeft));
89
90 // remove events percantage
91 AddFrame(new TGLabel(this,"Remove events percentage (%):"),new TGLayoutHints(kLHintsLeft));
92
93 fRemoveEventsEntry = new TGNumberEntry(this,
94 0,
95 6,
96 ENTRY_OCCUPATION,
97 TGNumberFormat::kNESInteger,
98 TGNumberFormat::kNEAPositive,
99 TGNumberFormat::kNELNoLimits);
100 AddFrame(fRemoveEventsEntry,new TGLayoutHints(kLHintsLeft));
101
102 // events in chunk
103 AddFrame(new TGLabel(this,"Number of events in file:"),new TGLayoutHints(kLHintsLeft));
104
105 fEventsInChunkEntry = new TGNumberEntry(this,
106 0,
107 6,
108 ENTRY_OCCUPATION,
109 TGNumberFormat::kNESInteger,
110 TGNumberFormat::kNEAPositive,
111 TGNumberFormat::kNELNoLimits);
112 AddFrame(fEventsInChunkEntry,new TGLayoutHints(kLHintsLeft));
113
114 // status label
115 fStatusLabel = new TGLabel(this,"");
116 AddFrame(fStatusLabel,new TGLayoutHints(kLHintsExpandX | kLHintsLeft));
117
118 AddFrame(new TGTextButton(this,"Close",BUTTON_CLOSE),
119 new TGLayoutHints(kLHintsLeft));
120
121 AddFrame(new TGTextButton(this,"Set parameters",BUTTON_SET),
122 new TGLayoutHints(kLHintsRight));
123
124
125 SetWindowName("Set Storage Parameters");
126 MapSubwindows();
127 Resize(WINDOWS_WIDTH,WINDOWS_HEIGHT);
128 MapWindow();
129}
130
131
132
133
134void AliStorageAdministratorPanelSetStorageParams::onSetParamsButton()
135{
136
137 struct clientRequestStruct *requestMessage = new struct clientRequestStruct;
138 //get run and event number from TGNumberEntries
139 requestMessage->messageType = REQUEST_SET_PARAMS;
140 requestMessage->maxStorageSize = fMaxStorageSizeEntry->GetIntNumber()*1000000;
141 requestMessage->maxOccupation = fMaxOccupationEntry->GetIntNumber();
142 requestMessage->removeEvents = fRemoveEventsEntry->GetIntNumber();
143 requestMessage->eventsInChunk = fEventsInChunkEntry->GetIntNumber();
144
145 fEventManager->Send(requestMessage,fClientSocket);
164d3d29 146 bool response = fEventManager->GetBool(fClientSocket);
5eb34a26 147
164d3d29 148 if(response)
5eb34a26 149 {
150 fStatusLabel->SetText("Params set");
151 cout<<"ADMIN PANEL -- Params set succesfully"<<endl;
152 }
153 else
154 {
155 fStatusLabel->SetText("Couldn't set params");
156 cout<<"ADMIN PANEL -- Couldn't set params"<<endl;
157 }
158}
159
160void AliStorageAdministratorPanelSetStorageParams::onCloseButton(){onExit();}
161void AliStorageAdministratorPanelSetStorageParams::CloseWindow(){onExit();}
162
163void AliStorageAdministratorPanelSetStorageParams::onExit()
164{
165 cout<<"Quiting set storage params";
166 if(fInstance){delete fInstance;fInstance=0;}
167 cout<<" -- OK"<<endl;
168}
169
170Bool_t AliStorageAdministratorPanelSetStorageParams::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
171{
172 switch (GET_MSG(msg))
173 {
174 case kC_COMMAND:
175 switch (GET_SUBMSG(msg))
176 {
177 case kCM_BUTTON:
178 switch(parm1)
179 {
180 case BUTTON_CLOSE:onCloseButton();break;
181 case BUTTON_SET:onSetParamsButton();break;
182 default:break;
183 }
184 break;
185 default:break;
186 }
187 break;
188 default:break;
189 }
190
191 return false;
192}