adding a random time offset for the pushback period in order to load balance multiple...
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 9 Nov 2010 23:36:58 +0000 (23:36 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 9 Nov 2010 23:36:58 +0000 (23:36 +0000)
adding getter for compression level, making some function arguments const

HLT/BASE/AliHLTComponent.cxx
HLT/BASE/AliHLTComponent.h

index 01f183e..413c182 100644 (file)
@@ -1393,7 +1393,7 @@ AliHLTUInt32_t AliHLTComponent::GetSpecification(const AliHLTComponentBlockData*
   return iSpec;
 }
 
-int AliHLTComponent::PushBack(TObject* pObject, const AliHLTComponentDataType& dt, AliHLTUInt32_t spec, 
+int AliHLTComponent::PushBack(const TObject* pObject, const AliHLTComponentDataType& dt, AliHLTUInt32_t spec, 
                              void* pHeader, int headerSize)
 {
   // see header file for function documentation
@@ -1445,7 +1445,7 @@ int AliHLTComponent::PushBack(TObject* pObject, const AliHLTComponentDataType& d
   return iResult;
 }
 
-int AliHLTComponent::PushBack(TObject* pObject, const char* dtID, const char* dtOrigin, AliHLTUInt32_t spec,
+int AliHLTComponent::PushBack(const TObject* pObject, const char* dtID, const char* dtOrigin, AliHLTUInt32_t spec,
                              void* pHeader, int headerSize)
 {
   // see header file for function documentation
@@ -1530,7 +1530,7 @@ int AliHLTComponent::InsertOutputBlock(const void* pBuffer, int iBufferSize, con
   return iResult;
 }
 
-int AliHLTComponent::EstimateObjectSize(TObject* pObject) const
+int AliHLTComponent::EstimateObjectSize(const TObject* pObject) const
 {
   // see header file for function documentation
   if (!pObject) return 0;
@@ -2137,7 +2137,13 @@ int AliHLTComponent::ProcessEvent( const AliHLTComponentEventData& evtData,
   if (fPushbackPeriod>0) {
     // suppress the output
     TDatime time;
-    if (fLastPushBackTime<0 || (int)time.Get()-fLastPushBackTime>=fPushbackPeriod) {
+    if (fLastPushBackTime<0) {
+      // choose a random offset at beginning to equalize traffic for multiple instances
+      // of the component
+      gRandom->SetSeed(fChainIdCrc);
+      fLastPushBackTime=time.Get();
+      fLastPushBackTime-=gRandom->Integer(fPushbackPeriod);
+    } else if ((int)time.Get()-fLastPushBackTime>=fPushbackPeriod) {
       fLastPushBackTime=time.Get();
     }
   }
index 3568827..f8c8a4f 100644 (file)
@@ -906,6 +906,9 @@ class AliHLTComponent : public AliHLTLogging {
    */
   static TUUID GenerateGUID();
 
+  /// get the compression level for TObjects
+  int GetCompressionLevel() const {return fCompressionLevel;}
+
  protected:
 
   /**
@@ -1308,7 +1311,7 @@ class AliHLTComponent : public AliHLTLogging {
    * @param headerSize  size of Header
    * @return neg. error code if failed 
    */
-  int PushBack(TObject* pObject, const AliHLTComponentDataType& dt, 
+  int PushBack(const TObject* pObject, const AliHLTComponentDataType& dt, 
               AliHLTUInt32_t spec=kAliHLTVoidDataSpec, 
               void* pHeader=NULL, int headerSize=0);
 
@@ -1327,7 +1330,7 @@ class AliHLTComponent : public AliHLTLogging {
    * @param headerSize  size of Header
    * @return neg. error code if failed 
    */
-  int PushBack(TObject* pObject, const char* dtID, const char* dtOrigin,
+  int PushBack(const TObject* pObject, const char* dtID, const char* dtOrigin,
               AliHLTUInt32_t spec=kAliHLTVoidDataSpec,
               void* pHeader=NULL, int headerSize=0);
  
@@ -1365,7 +1368,7 @@ class AliHLTComponent : public AliHLTLogging {
    * @param pObject
    * @return buffer size in byte
    */
-  int EstimateObjectSize(TObject* pObject) const;
+  int EstimateObjectSize(const TObject* pObject) const;
 
   /**
    * Create a memory file in the output stream.