Updated buffer handling with mutex and faster response
authorslindal <slindal@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 11 Nov 2010 12:48:32 +0000 (12:48 +0000)
committerslindal <slindal@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 11 Nov 2010 12:48:32 +0000 (12:48 +0000)
EVE/EveHLT/AliEveEventBuffer.cxx
EVE/EveHLT/AliEveHLTEventManagerHomer.cxx
EVE/EveHLT/AliEveHLTEventManagerHomer.h

index d064439..4837327 100644 (file)
@@ -84,6 +84,7 @@ void AliEveEventBuffer::CreateBufferThread() {
       cout << "Started BufferThread"<<endl;
     } else { 
       cout << "Buffer is full already"<<endl;
+      fMutex->UnLock();
     }
   }
 }
index 635743d..b1f558c 100644 (file)
 #include "TList.h"
 #include "AliEveHOMERManager.h"
 #include "TEveManager.h"
+#include "TTimer.h"
+#include "TGLOverlayButton.h"
 
 ClassImp(AliEveHLTEventManagerHomer)
 
 AliEveHLTEventManagerHomer::AliEveHLTEventManagerHomer() : 
   AliEveHLTEventManager(),
-  fEventBuffer(NULL)
+  fEventBuffer(NULL), 
+  fNextEventTimer(NULL),
+  fInfoButton(NULL)
 {
   // see header file for class documentation
-  // or
-  // refer to README to build package
-  // or
-  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
   fEventBuffer = new AliEveEventBufferHomer();
   fEventBuffer->StartBufferMonitor();
-  //AliEveHOMERManager * hm = fEventBuffer->GetHomerManager();
-  //if(hm) GetEveManager()->AddToListTree(hm, kTRUE);
+    
+  fNextEventTimer = new TTimer();
+  fNextEventTimer->Connect("Timeout()", "AliEveHLTEventManagerHomer", this, "TryNextEvent()" );
+   
   
 
 }
@@ -51,17 +54,22 @@ void AliEveHLTEventManagerHomer::ProcessList(TList * blockList) {
   UpdateDisplay();
 
 }
-
-
+void AliEveHLTEventManagerHomer::NextEvent() {
+  fNextEventTimer->Start(1000);
+}
 
 ///________________________________________________________________________________
-void AliEveHLTEventManagerHomer::NextEvent() {
+void AliEveHLTEventManagerHomer::TryNextEvent() {
   //See header file for documentation
-  if(fEventBuffer->LockMutex() ) {
-    cout << "event buffer already busy"<<endl;
+    
+  if ( fEventBuffer->LockMutex() ) {
+    cout << "try again in 1 sec"<<endl;
     return;
-  } else {
-
+  }
+  
+  fNextEventTimer->Stop();
+    
+  cout << "Mutex is freeee!!"<<endl;
   TList * aSyncEvent = fEventBuffer->GetASyncEvent();
   TList * event = static_cast<TList*>(fEventBuffer->NextEvent());
   if(event) {
@@ -83,14 +91,6 @@ void AliEveHLTEventManagerHomer::NextEvent() {
     cout << "couldn't get the sync event"<<endl;
   }
   
-  //  cout  << "doint async block"<<endl;
-  //  TList * async = static_cast<TList*>(fEventBuffer->GetAList());
-  //  if(async) {
-  //   ProcessEvent(async);
-  //   }  else {
-  //    cout << "No async bloc"<<endl;
-  // }
-  }
   
   fEventBuffer->UnLockMutex();
 }
index 7548720..36a1457 100644 (file)
@@ -1,3 +1,6 @@
+// Author: 2010 Svein Lindal <slindal@fys.uio.no>                        *
+//         for The ALICE HLT Project.                                    *
+
 #ifndef ALIEVEHLTEVENTMANAGERHOMER_H
 #define ALIEVEHLTEVENTMANAGERHOMER_H
 
@@ -7,6 +10,8 @@ class AliESDEvent;
 #include "AliEveEventBufferHomer.h"
 #include "AliEveEventBuffer.h"
 class TList;
+class TTimer;
+class TGLOverlayButton;
 
 class AliEveHLTEventManagerHomer : public AliEveHLTEventManager { 
 
@@ -17,10 +22,16 @@ public:
   
   virtual ~AliEveHLTEventManagerHomer();
 
+  //Get Next Event
   void NextEvent();
+  //Try to get the next event
+  void TryNextEvent();
+  //Get next event in buffer
   void NavigateFwd();
+  //Get Previous event in buffer
   void NavigateBack();
 
+  //Process block list
   void ProcessList(TList * blockList);
 
  private:
@@ -32,11 +43,19 @@ public:
   /** assignment operator prohibited */
   AliEveHLTEventManagerHomer& operator=(const AliEveHLTEventManagerHomer&);
   
-  AliEveEventBufferHomer * fEventBuffer;
+  AliEveEventBufferHomer * fEventBuffer; //Event buffer
+  ///Get event buffer
   AliEveEventBuffer * GetEventBuffer() { return dynamic_cast<AliEveEventBuffer*>(fEventBuffer); }
 
+  
+  TTimer * fNextEventTimer;  //Timer to fetch next event
+  TGLOverlayButton * fInfoButton; //Information button
+
+
   ClassDef(AliEveHLTEventManagerHomer, 0);
 
+
+
 };
 
 #endif