LCOV - code coverage report
Current view: top level - HLT/BASE - AliHLTConfigurationHandler.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 7 14.3 %
Date: 2016-06-14 17:26:59 Functions: 1 9 11.1 %

          Line data    Source code
       1             : //-*- Mode: C++ -*-
       2             : // $Id$
       3             : 
       4             : #ifndef ALIHLTCONFIGURATIONHANDLER_H
       5             : #define ALIHLTCONFIGURATIONHANDLER_H
       6             : ///* This file is property of and copyright by the                          * 
       7             : ///* ALICE Experiment at CERN, All rights reserved.                         *
       8             : ///* See cxx source for full Copyright notice                               *
       9             : 
      10             : /// @file   AliHLTConfigurationHandler.h
      11             : /// @author Matthias Richter
      12             : /// @date   
      13             : /// @brief  Global handling of HLT configurations.
      14             : ///
      15             : 
      16             : #include <TList.h>
      17             : 
      18             : #include "AliHLTLogging.h"
      19             : class AliHLTConfiguration;
      20             : class TMap;
      21             : 
      22             : /**
      23             :  * @class AliHLTConfigurationHandler
      24             :  * @brief Global Handling of HLT configurations.
      25             :  *
      26             :  * This class implements the global handling of @ref AliHLTConfiguration objects.
      27             :  * It is a list of all configuration descriptors currently available in the system.
      28             :  * Each @ref AliHLTConfiguration object is registered automatically with the
      29             :  * handler and put into the list.
      30             :  *
      31             :  * @note This class is only used for the @ref alihlt_system.
      32             :  *
      33             :  * @ingroup alihlt_system
      34             :  */
      35             : class AliHLTConfigurationHandler : public AliHLTLogging {
      36             :  public:
      37             :   /** standard constructor */
      38             :   AliHLTConfigurationHandler();
      39             :   
      40             :   /** destructor */
      41             :   virtual ~AliHLTConfigurationHandler();
      42             : 
      43             :   /*****************************************************************************
      44             :    * singleton handling
      45             :    */
      46             : 
      47             :   /**
      48             :    * Create an instance from the global sigleton.
      49             :    * Instance has to be destroyed by the Destroy function
      50             :    */
      51             :   static AliHLTConfigurationHandler* CreateHandler();
      52             : 
      53             :   /**
      54             :    * Destroy an instance of the global singleton retrieved by
      55             :    * AliHLTConfigurationHandler::CreateHandler()
      56             :    */
      57             :   int Destroy();
      58             : 
      59             :   /**
      60             :    * Get the instance of the global singleton.
      61             :    * Does not create the global instance.
      62             :    */
      63             :   static AliHLTConfigurationHandler* Instance() {
      64           0 :     if (!fgpInstance) return NULL;
      65           0 :     return fgpInstance;
      66           0 :   }
      67             : 
      68             :   /*****************************************************************************
      69             :    * activation, affects if the handler will accept new registrations
      70             :    */
      71             : 
      72             :   /**
      73             :    * Deactivate the handler, AliHLTConfiguration objects will not register
      74             :    * @param schedule     Store and schedule registrations pending reactivation
      75             :    */
      76             :   int Deactivate(bool schedule=false);
      77             : 
      78             :   /**
      79             :    * Activate the handler, AliHLTConfiguration objects will register again
      80             :    */
      81             :   int Activate();
      82             : 
      83             :   /// check if active
      84           0 :   bool IsActive() const {return (fFlags&kInactive)==0;}
      85             :   
      86             :   /// check if scheduling
      87           0 :   bool IsScheduling() const {return (fFlags&kScheduling)>0;}
      88             :   
      89             :   /// clear scheduled registrations
      90           0 :   void ClearScheduledRegistrations() {fgListScheduledRegistrations.Delete();}
      91             : 
      92             :   /// signal a missed registration
      93             :   static int MissedRegistration(const char* name=NULL);
      94             : 
      95             :   /*****************************************************************************
      96             :    * registration
      97             :    */
      98             : 
      99             :   /**
     100             :    * Register a configuration to the global list of configurations.
     101             :    * @param pConf     The configuration to register
     102             :    */
     103             :   int RegisterConfiguration(AliHLTConfiguration* pConf);
     104             : 
     105             :   /**
     106             :    * Create a configuration and register it.
     107             :    * @param id
     108             :    * @param component
     109             :    * @param sources
     110             :    * @param arguments
     111             :    */
     112             :   int CreateConfiguration(const char* id, const char* component, const char* sources, const char* arguments);
     113             : 
     114             :   /**
     115             :    * Remove a configuration from the global list.
     116             :    * @param pConf     The configuration to remove
     117             :    */
     118             :   int RemoveConfiguration(AliHLTConfiguration* pConf);
     119             : 
     120             :   /**
     121             :    * Remove a configuration from the global list.
     122             :    * @param id     The configuration to remove
     123             :    */
     124             :   int RemoveConfiguration(const char* id);
     125             : 
     126             :   /**
     127             :    * Find a configuration from the global list.
     128             :    * @param id     Id of the configuration to find
     129             :    */
     130             :   AliHLTConfiguration* FindConfiguration(const char* id);
     131             : 
     132             :   /**
     133             :    * Print the registered configurations to the logging function.
     134             :    */
     135             :   void PrintConfigurations();
     136             : 
     137             :   /**
     138             :    * Print info
     139             :    * Options:
     140             :    * -  treeroot=configuration  print the dependency tree for a configuration
     141             :    * default PrintConfigurations
     142             :    */
     143             :   void Print(const char* option="");
     144             : 
     145             :   /**
     146             :    * Add a component substitution by component id.
     147             :    * All components of the specified component id will be replaced by the
     148             :    * substitution component, the component arguments are replaced accordingly.
     149             :    * Component substitution is in particular useful if the input to a specific
     150             :    * component should be written to file.
     151             :    */
     152             :   static int AddSubstitution(const char* componentId, const AliHLTConfiguration& subst);
     153             : 
     154             :   /**
     155             :    * Add a component substitution by configuration id.
     156             :    * The component of the specified configuration will be replaced by the
     157             :    * substitution component, the component arguments are replaced accordingly.
     158             :    * Component substitution is in particular useful if the input to a specific
     159             :    * component should be written to file.
     160             :    */
     161             :   static int AddSubstitution(const AliHLTConfiguration& conf , const AliHLTConfiguration& subst);
     162             : 
     163             :   /**
     164             :    * Find component substitution.
     165             :    */
     166             :   static const AliHLTConfiguration* FindSubstitution(const AliHLTConfiguration& conf);
     167             : 
     168             :  private:
     169             :   enum {
     170             :     kInactive = 0x1,
     171             :     kScheduling = 0x2
     172             :   };
     173             : 
     174             :   /** the list of registered configurations */
     175             :   TList fgListConfigurations;                                      // see above
     176             :   
     177             :   /** list of configurations scheduled to be registered */
     178             :   TList fgListScheduledRegistrations;                              // see above
     179             : 
     180             :   /** status of the handler */
     181             :   unsigned fFlags;                                                 //! transient
     182             : 
     183             :   /** the global singleton */
     184             :   static AliHLTConfigurationHandler* fgpInstance;                  //!transient
     185             :   /** number of used instances of the global singleton */
     186             :   static int fgNofInstances;                                       //!transient 
     187             : 
     188             :   /// component substitution map
     189             :   /// key: either TObjString with component id or AliHLTConfiguration object
     190             :   static TMap* fgpSubstitutions;                                   //!transient 
     191             : 
     192         126 :   ClassDef(AliHLTConfigurationHandler, 0);
     193             : };
     194             : 
     195             : #endif

Generated by: LCOV version 1.11