+void AliEveEventManager::GetNextEvent()
+{
+#ifdef ZMQ
+ AliStorageEventManager *eventManager =
+ AliStorageEventManager::GetEventManagerInstance();
+ eventManager->CreateSocket(EVENTS_SERVER_SUB);
+
+ fCurrentEvent[0]=0;
+ fCurrentEvent[1]=0;
+ fCurrentTree[0]=0;
+ fCurrentTree[1]=0;
+ AliESDEvent *tmpEvent = NULL;
+ TTree *tmpTree = NULL;
+
+ while(1)
+ {
+ //if(tmpEvent){delete tmpEvent;tmpEvent=0;}
+ tmpEvent = eventManager->GetEvent(EVENTS_SERVER_SUB,-1,&tmpTree);
+
+ if(tmpEvent)
+ {
+ if(tmpEvent->GetRunNumber()>=0)
+ {
+ fMutex.Lock();
+ if(fEventInUse == 0){fWritingToEventIndex = 1;}
+ else if(fEventInUse == 1){fWritingToEventIndex = 0;}
+ cout<<"Writing to:"<<fWritingToEventIndex<<endl;
+ if(fCurrentEvent[fWritingToEventIndex])
+ {
+ cout<<"DELETING:"<<fCurrentEvent[fWritingToEventIndex]<<endl;
+ delete fCurrentEvent[fWritingToEventIndex];
+ fCurrentEvent[fWritingToEventIndex]=0;
+ delete fCurrentTree[fWritingToEventIndex];
+ }
+ fCurrentEvent[fWritingToEventIndex] = tmpEvent;
+ fCurrentTree[fWritingToEventIndex] = tmpTree;
+ fIsNewEventAvaliable = true;
+ fMutex.UnLock();
+ }
+ }
+ }
+#endif
+}
+
+void AliEveEventManager::CheckStorageStatus()
+{
+#ifdef ZMQ
+ AliEveConfigManager *configManager = AliEveConfigManager::GetMaster();
+ configManager->ConnectEventManagerSignals();
+
+ AliStorageEventManager *eventManager = AliStorageEventManager::GetEventManagerInstance();
+ eventManager->CreateSocket(CLIENT_COMMUNICATION_REQ);
+
+ struct clientRequestStruct *request = new struct clientRequestStruct;
+ request->messageType = REQUEST_CONNECTION;
+
+ while (1)
+ {
+ if(eventManager->Send(request,CLIENT_COMMUNICATION_REQ,5000))
+ {
+ StorageManagerOk();
+ cout<<"WARNING -- Storage Manager is OK."<<endl;
+ long response = eventManager->GetLong(CLIENT_COMMUNICATION_REQ);
+ cout<<"RESPONSE:"<<response<<endl;
+ }
+ else
+ {
+ StorageManagerDown();
+ cout<<"WARNING -- Storage Manager is DOWN!!"<<endl;
+ }
+ sleep(1);
+ }
+#endif
+}
+
+void AliEveEventManager::InitInternals()
+{
+ // Initialize internal members.
+
+ static const TEveException kEH("AliEveEventManager::InitInternals ");
+
+ if (fgCurrent != 0)
+ {
+ throw(kEH + "Dependent event-managers should be created via static method AddDependentManager().");
+ }
+
+ if (fgMaster == 0)
+ {
+ fgMaster = this;
+ }
+
+ fgCurrent = this;
+
+ fAutoLoadTimer = new TTimer;
+ fAutoLoadTimer->Connect("Timeout()", "AliEveEventManager", this, "AutoLoadNextEvent()");
+ fAutoLoadTimer->Connect("Timeout()", "AliEveEventManager", this, "Timeout()");
+
+ fExecutor = new AliEveMacroExecutor;
+
+ fTransients = new TEveElementList("Transients", "Transient per-event elements.");
+ fTransients->IncDenyDestroy();
+ gEve->AddToListTree(fTransients, kFALSE);
+
+ fTransientLists = new TEveElementList("Transient Lists", "Containers of transient elements.");
+ fTransientLists->IncDenyDestroy();
+ gEve->AddToListTree(fTransientLists, kFALSE);
+
+ fPEventSelector = new AliEveEventSelector(this);
+
+ fGlobal = new TMap; fGlobal->SetOwnerKeyValue();
+}
+