#include "AliStorageAdministratorPanelSetStorageParams.h" #include "AliStorageTypes.h" #include #include "zmq.hpp" #include #include using namespace std; using namespace zmq; AliStorageAdministratorPanelSetStorageParams *AliStorageAdministratorPanelSetStorageParams::fInstance=0; ClassImp(AliStorageAdministratorPanelSetStorageParams); #define WINDOWS_WIDTH 200 #define WINDOWS_HEIGHT 200 enum BUTTON{ BUTTON_CLOSE=1, BUTTON_SET }; enum ENTRY{ ENTRY_STORAGE_SIZE=1, ENTRY_OCCUPATION, ENTRY_REMOVE, ENTRY_EVENTS_CHUNK }; AliStorageAdministratorPanelSetStorageParams::AliStorageAdministratorPanelSetStorageParams() : TGMainFrame(gClient->GetRoot(), 400, 400), fStatusLabel(0), fMaxStorageSizeEntry(0), fMaxOccupationEntry(0), fRemoveEventsEntry(0), fEventsInChunkEntry(0), fClientSocket(0), fEventManager(0) { fEventManager = new AliStorageEventManager(); InitWindow(); } AliStorageAdministratorPanelSetStorageParams::~AliStorageAdministratorPanelSetStorageParams(){} AliStorageAdministratorPanelSetStorageParams* AliStorageAdministratorPanelSetStorageParams::GetInstance() { if(!fInstance){fInstance = new AliStorageAdministratorPanelSetStorageParams();} return fInstance; } void AliStorageAdministratorPanelSetStorageParams::Setup(socket_t *socket, int maxStorageSize, int maxOccupation, int removeEvents, int eventsInChunk) { fClientSocket = socket; fMaxStorageSizeEntry->SetIntNumber(maxStorageSize); fMaxOccupationEntry->SetIntNumber(maxOccupation); fRemoveEventsEntry->SetIntNumber(removeEvents); fEventsInChunkEntry->SetIntNumber(eventsInChunk); } void AliStorageAdministratorPanelSetStorageParams::InitWindow() { SetCleanup(kDeepCleanup); // max storage size AddFrame(new TGLabel(this,"Max storage size (MB):"),new TGLayoutHints(kLHintsLeft)); fMaxStorageSizeEntry = new TGNumberEntry(this, 0, 6, ENTRY_STORAGE_SIZE, TGNumberFormat::kNESInteger, TGNumberFormat::kNEAPositive, TGNumberFormat::kNELNoLimits); AddFrame(fMaxStorageSizeEntry,new TGLayoutHints(kLHintsLeft)); // max occupation AddFrame(new TGLabel(this,"Max occupation percent (%):"),new TGLayoutHints(kLHintsLeft)); fMaxOccupationEntry = new TGNumberEntry(this, 0, 6, ENTRY_OCCUPATION, TGNumberFormat::kNESInteger, TGNumberFormat::kNEAPositive, TGNumberFormat::kNELNoLimits); AddFrame(fMaxOccupationEntry,new TGLayoutHints(kLHintsLeft)); // remove events percantage AddFrame(new TGLabel(this,"Remove events percentage (%):"),new TGLayoutHints(kLHintsLeft)); fRemoveEventsEntry = new TGNumberEntry(this, 0, 6, ENTRY_OCCUPATION, TGNumberFormat::kNESInteger, TGNumberFormat::kNEAPositive, TGNumberFormat::kNELNoLimits); AddFrame(fRemoveEventsEntry,new TGLayoutHints(kLHintsLeft)); // events in chunk AddFrame(new TGLabel(this,"Number of events in file:"),new TGLayoutHints(kLHintsLeft)); fEventsInChunkEntry = new TGNumberEntry(this, 0, 6, ENTRY_OCCUPATION, TGNumberFormat::kNESInteger, TGNumberFormat::kNEAPositive, TGNumberFormat::kNELNoLimits); AddFrame(fEventsInChunkEntry,new TGLayoutHints(kLHintsLeft)); // status label fStatusLabel = new TGLabel(this,""); AddFrame(fStatusLabel,new TGLayoutHints(kLHintsExpandX | kLHintsLeft)); AddFrame(new TGTextButton(this,"Close",BUTTON_CLOSE), new TGLayoutHints(kLHintsLeft)); AddFrame(new TGTextButton(this,"Set parameters",BUTTON_SET), new TGLayoutHints(kLHintsRight)); SetWindowName("Set Storage Parameters"); MapSubwindows(); Resize(WINDOWS_WIDTH,WINDOWS_HEIGHT); MapWindow(); } void AliStorageAdministratorPanelSetStorageParams::onSetParamsButton() { struct clientRequestStruct *requestMessage = new struct clientRequestStruct; //get run and event number from TGNumberEntries requestMessage->messageType = REQUEST_SET_PARAMS; requestMessage->maxStorageSize = fMaxStorageSizeEntry->GetIntNumber()*1000000; requestMessage->maxOccupation = fMaxOccupationEntry->GetIntNumber(); requestMessage->removeEvents = fRemoveEventsEntry->GetIntNumber(); requestMessage->eventsInChunk = fEventsInChunkEntry->GetIntNumber(); fEventManager->Send(requestMessage,fClientSocket); message_t *response = new message_t(); fClientSocket->recv(response); char *result = (char*)response->data(); if(!strcmp("true",result)) { fStatusLabel->SetText("Params set"); cout<<"ADMIN PANEL -- Params set succesfully"<SetText("Couldn't set params"); cout<<"ADMIN PANEL -- Couldn't set params"<