ROOT logo
// $Id$
// split from AliHLTConfiguration.cxx,v 1.25 2007/10/12 13:24:47
///**************************************************************************
///* This file is property of and copyright by the                          * 
///* ALICE Experiment at CERN, All rights reserved.                         *
///*                                                                        *
///* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
///*                  for The ALICE HLT Project.                            *
///*                                                                        *
///* Permission to use, copy, modify and distribute this software and its   *
///* documentation strictly for non-commercial purposes is hereby granted   *
///* without fee, provided that the above copyright notice appears in all   *
///* copies and that both the copyright notice and this permission notice   *
///* appear in the supporting documentation. The authors make no claims     *
///* about the suitability of this software for any purpose. It is          *
///* provided "as is" without express or implied warranty.                  *
///**************************************************************************/

/// @file   AliHLTConfigurationHandler.cxx
/// @author Matthias Richter
/// @date   
/// @brief  Implementation of HLT tasks.
///

#include <cerrno>
#include <iostream>
#include <string>
#include "AliHLTConfigurationHandler.h"
#include "AliHLTConfiguration.h"
#include "AliHLTErrorGuard.h"
#include "TMap.h"
#include "TObjString.h"

/** ROOT macro for the implementation of ROOT specific class methods */
ClassImp(AliHLTConfigurationHandler)

AliHLTConfigurationHandler::AliHLTConfigurationHandler()
  : AliHLTLogging()
  , fgListConfigurations()
  , fgListScheduledRegistrations()
  , fFlags(0)
{
  // constructor
  //
  // Global Handling of HLT configurations.
  //
  // This class implements the global handling of @ref AliHLTConfiguration objects.
  // It is a list of all configuration descriptors currently available in the system.
  // Each @ref AliHLTConfiguration object is registered automatically with the
  // handler and put into the list.
  SetLocalLoggingLevel(kHLTLogInfo);
}

AliHLTConfigurationHandler::~AliHLTConfigurationHandler()
{
  // destructor
  TObjLink* lnk=NULL;
  while ((lnk=fgListConfigurations.FirstLink())!=NULL) {
    AliHLTConfiguration* pConf=(AliHLTConfiguration*)lnk->GetObject();
    HLTDebug("delete configuration \"%s\"", pConf->GetName());
    fgListConfigurations.Remove(lnk);
    delete pConf;
  }
  fgListScheduledRegistrations.Delete();
}

AliHLTConfigurationHandler* AliHLTConfigurationHandler::fgpInstance=NULL;
int AliHLTConfigurationHandler::fgNofInstances=0;
TMap* AliHLTConfigurationHandler::fgpSubstitutions=NULL;

AliHLTConfigurationHandler* AliHLTConfigurationHandler::CreateHandler()
{
  // create global handler instance
  if (!fgpInstance) fgpInstance=new AliHLTConfigurationHandler;
  fgNofInstances++;
  return fgpInstance;
}

int AliHLTConfigurationHandler::Destroy()
{
  // destroy instance
  int nofInstances=0;
  if (fgpInstance==this) {
    nofInstances=--fgNofInstances;
  }
  if (fgNofInstances==0) {
    fgpInstance = NULL;
    if (fgpSubstitutions) delete fgpSubstitutions;
    fgpSubstitutions=NULL;
  }
  if (nofInstances==0) delete this;
  return nofInstances;
}


int AliHLTConfigurationHandler::RegisterConfiguration(AliHLTConfiguration* pConf)
{
  // register a configuration
  int iResult=0;
  if (pConf) {
    AliHLTConfiguration* pClone=new AliHLTConfiguration(*pConf);
    if (IsActive()) {      
      AliHLTConfiguration* pExisting=NULL;
      if ((pExisting=FindConfiguration(pConf->GetName())) == NULL) {
        fgListConfigurations.Add(pClone);
        HLTDebug("configuration \"%s\" (%p) registered from %p", pClone->GetName(), pClone, pConf);

        // mark all configurations with unresolved dependencies for re-evaluation
        TObjLink* lnk=fgListConfigurations.FirstLink();
        while (lnk) {
          AliHLTConfiguration* pSrc=(AliHLTConfiguration*)lnk->GetObject();
          if (pSrc && pSrc!=pClone && pSrc->SourcesResolved()!=1) {
            pSrc->InvalidateSources();
          }
          lnk=lnk->Next();
        }
      } else {
        if ((*pExisting)!=(*pConf)) {
          iResult=-EEXIST;
          HLTWarning("configuration \"%s\" already registered with different properties", pConf->GetName());
        }
      }
    } else if (IsScheduling()) {
      fgListScheduledRegistrations.Add(pClone);
    }
  } else {
    iResult=-EINVAL;
  }
  return iResult;
}

int AliHLTConfigurationHandler::CreateConfiguration(const char* id, const char* component, const char* sources, const char* arguments)
{
  // create configuration
  int iResult=0;
  // if this handler is the global instance the configuration is added
  // automatically in the creation of the AliHLTConfiguration object
  // the global instance must be deactivated otherwise in order to just create
  // the object and then add it to THIS handler
  bool bIamGlobal=fgpInstance==this;
  if (!bIamGlobal && fgpInstance) {
    // deactivate the automatic registration in the global handler
    fgpInstance->Deactivate(false);
  }
  AliHLTConfiguration* pConf= new AliHLTConfiguration(id, component, sources, arguments);
  if (pConf) {
    if (bIamGlobal) {
    // the configuration will be registered automatically, if this failes the configuration
    // is missing -> delete it
    if (FindConfiguration(id)==NULL) {
      delete pConf;
      pConf=NULL;
      iResult=-EEXIST;
    }
    } else {
      RegisterConfiguration(pConf);
    }
  } else {
    HLTError("system error: object allocation failed");
    iResult=-ENOMEM;
  }
  if (!bIamGlobal && fgpInstance) {
    // deactivate the automatic registration in the global handler
    fgpInstance->Activate();
  }
  return iResult;
}

void AliHLTConfigurationHandler::PrintConfigurations()
{
  // print information
  HLTLogKeyword("configuration listing");
  HLTMessage("registered configurations:");
  TObjLink *lnk = fgListConfigurations.FirstLink();
  while (lnk) {
    TObject *obj = lnk->GetObject();
    HLTMessage("  %s", obj->GetName());
    lnk = lnk->Next();
  }
}

void AliHLTConfigurationHandler::Print(const char* option)
{
  // print info
  TString argument(option);
  if (argument.BeginsWith("treeroot=")) {
    argument.ReplaceAll("treeroot=", "");
    if (argument.IsNull()) {
      cout << "invalid argument to option 'treeroot=', please specify configuration" << endl;
      return;
    }
    // TODO: add functionality to print a dependency tree beginning from a root configuration
    // add also option to limit the depth
    cout << "need to implement option 'treeview', argument " << argument << endl;
    return;
  }

  // default: print all
  PrintConfigurations();
}

int AliHLTConfigurationHandler::RemoveConfiguration(const char* id)
{
  // remove configuration from registry
  int iResult=0;
  if (id) {
    AliHLTConfiguration* pConf=NULL;
    if ((pConf=FindConfiguration(id))!=NULL) {
      iResult=RemoveConfiguration(pConf);
      delete pConf;
      pConf=NULL;
    } else {
      HLTWarning("can not find configuration \"%s\"", id);
      iResult=-ENOENT;
    }
  } else {
    iResult=-EINVAL;
  }
  return iResult;
}

int AliHLTConfigurationHandler::RemoveConfiguration(AliHLTConfiguration* pConf)
{
  // remove configuration from registry
  int iResult=0;
  if (pConf) {
    // remove the configuration from the list
    HLTDebug("remove configuration \"%s\"", pConf->GetName());
    fgListConfigurations.Remove(pConf);
    // remove cross links in the remaining configurations
    TObjLink* lnk=fgListConfigurations.FirstLink();
    while (lnk && iResult>=0) {
      AliHLTConfiguration* pRem=(AliHLTConfiguration*)lnk->GetObject();
      if (pRem) {
	pRem->InvalidateSource(pConf);
      } else {
	iResult=-EFAULT;
      }
      lnk=lnk->Next();
    }
  }
  return iResult;
}

AliHLTConfiguration* AliHLTConfigurationHandler::FindConfiguration(const char* id)
{
  // find configuration by id
  AliHLTConfiguration* pConf=NULL;
  if (id) {
    pConf=(AliHLTConfiguration*)fgListConfigurations.FindObject(id); 
  }
  return pConf;
}

int AliHLTConfigurationHandler::Deactivate(bool schedule)
{
  // deactivate handler
  fFlags|=kInactive;
  if (schedule)
    fFlags|=kScheduling;
  return 0;
}

int AliHLTConfigurationHandler::Activate()
{
  // activate handler
  fFlags&=~kInactive;
  if (IsScheduling()) {
    fFlags&=~kScheduling;
    TObjLink *lnk = fgListScheduledRegistrations.FirstLink();
    while (lnk) {
      RegisterConfiguration((AliHLTConfiguration*)lnk->GetObject());
      lnk = lnk->Next();
    }
    ClearScheduledRegistrations();
  }
  return 0;
}

int AliHLTConfigurationHandler::MissedRegistration(const char* name)
{
  /// indicate a failed attempt to register because of unavailable global instance

  /// everything fine if global instance is inactive
  if (fgpInstance) {
    if (fgpInstance->IsActive()) {
      static AliHLTErrorGuard g("AliHLTConfigurationHandler", "MissedRegistration",
				"internal error, global instance available but registration of configuration failed");
      (++g).Throw(1);
    }
    return 0;
  }
  TString message("Missing configuration handler, failed to register configuration");
  if (name) {message+=" '"; message+=name;}
  message+="'\n AliHLTSystem and configuration handler can be initialized by adding the line";
  message+="\n    AliHLTSystem* pHLT=AliHLTPluginBase::GetInstance();";
  message+="\n to the macro before the first AliHLTConfiguration definition. Suppressing further messages.\n";
  static AliHLTErrorGuard g("AliHLTConfigurationHandler", "MissedRegistration", message.Data());
  (++g).Throw(1);
  return 1;
}

int AliHLTConfigurationHandler::AddSubstitution(const char* componentId, const AliHLTConfiguration& subst)
{
  /// add component substitution for components of specified id
  if (!componentId) return -EINVAL;
  if (!fgpSubstitutions) fgpSubstitutions=new TMap;
  if (!fgpSubstitutions) return -ENOMEM;
  fgpSubstitutions->SetOwnerKeyValue(kTRUE);

  fgpSubstitutions->Add(new TObjString(componentId), new AliHLTConfiguration(subst));

  return 0;  
}

int AliHLTConfigurationHandler::AddSubstitution(const AliHLTConfiguration& conf , const AliHLTConfiguration& subst)
{
  /// add component substitution for components of specified id
  if (!fgpSubstitutions) fgpSubstitutions=new TMap;
  if (!fgpSubstitutions) return -ENOMEM;
  fgpSubstitutions->SetOwnerKeyValue(kTRUE);

  fgpSubstitutions->Add(new AliHLTConfiguration(conf), new AliHLTConfiguration(subst));

  return 0;  
}

const AliHLTConfiguration* AliHLTConfigurationHandler::FindSubstitution(const AliHLTConfiguration& conf)
{
  /// find component substitution for a configuration
  if (!fgpSubstitutions) return NULL;
  TObject* value=NULL;

  // check for specific configuration
  value=fgpSubstitutions->GetValue(conf.GetName());
  if (value) return dynamic_cast<AliHLTConfiguration*>(value);

  // check for component Id
  value=fgpSubstitutions->GetValue(conf.GetComponentID());
  if (value) return dynamic_cast<AliHLTConfiguration*>(value);

  return NULL;
}
 AliHLTConfigurationHandler.cxx:1
 AliHLTConfigurationHandler.cxx:2
 AliHLTConfigurationHandler.cxx:3
 AliHLTConfigurationHandler.cxx:4
 AliHLTConfigurationHandler.cxx:5
 AliHLTConfigurationHandler.cxx:6
 AliHLTConfigurationHandler.cxx:7
 AliHLTConfigurationHandler.cxx:8
 AliHLTConfigurationHandler.cxx:9
 AliHLTConfigurationHandler.cxx:10
 AliHLTConfigurationHandler.cxx:11
 AliHLTConfigurationHandler.cxx:12
 AliHLTConfigurationHandler.cxx:13
 AliHLTConfigurationHandler.cxx:14
 AliHLTConfigurationHandler.cxx:15
 AliHLTConfigurationHandler.cxx:16
 AliHLTConfigurationHandler.cxx:17
 AliHLTConfigurationHandler.cxx:18
 AliHLTConfigurationHandler.cxx:19
 AliHLTConfigurationHandler.cxx:20
 AliHLTConfigurationHandler.cxx:21
 AliHLTConfigurationHandler.cxx:22
 AliHLTConfigurationHandler.cxx:23
 AliHLTConfigurationHandler.cxx:24
 AliHLTConfigurationHandler.cxx:25
 AliHLTConfigurationHandler.cxx:26
 AliHLTConfigurationHandler.cxx:27
 AliHLTConfigurationHandler.cxx:28
 AliHLTConfigurationHandler.cxx:29
 AliHLTConfigurationHandler.cxx:30
 AliHLTConfigurationHandler.cxx:31
 AliHLTConfigurationHandler.cxx:32
 AliHLTConfigurationHandler.cxx:33
 AliHLTConfigurationHandler.cxx:34
 AliHLTConfigurationHandler.cxx:35
 AliHLTConfigurationHandler.cxx:36
 AliHLTConfigurationHandler.cxx:37
 AliHLTConfigurationHandler.cxx:38
 AliHLTConfigurationHandler.cxx:39
 AliHLTConfigurationHandler.cxx:40
 AliHLTConfigurationHandler.cxx:41
 AliHLTConfigurationHandler.cxx:42
 AliHLTConfigurationHandler.cxx:43
 AliHLTConfigurationHandler.cxx:44
 AliHLTConfigurationHandler.cxx:45
 AliHLTConfigurationHandler.cxx:46
 AliHLTConfigurationHandler.cxx:47
 AliHLTConfigurationHandler.cxx:48
 AliHLTConfigurationHandler.cxx:49
 AliHLTConfigurationHandler.cxx:50
 AliHLTConfigurationHandler.cxx:51
 AliHLTConfigurationHandler.cxx:52
 AliHLTConfigurationHandler.cxx:53
 AliHLTConfigurationHandler.cxx:54
 AliHLTConfigurationHandler.cxx:55
 AliHLTConfigurationHandler.cxx:56
 AliHLTConfigurationHandler.cxx:57
 AliHLTConfigurationHandler.cxx:58
 AliHLTConfigurationHandler.cxx:59
 AliHLTConfigurationHandler.cxx:60
 AliHLTConfigurationHandler.cxx:61
 AliHLTConfigurationHandler.cxx:62
 AliHLTConfigurationHandler.cxx:63
 AliHLTConfigurationHandler.cxx:64
 AliHLTConfigurationHandler.cxx:65
 AliHLTConfigurationHandler.cxx:66
 AliHLTConfigurationHandler.cxx:67
 AliHLTConfigurationHandler.cxx:68
 AliHLTConfigurationHandler.cxx:69
 AliHLTConfigurationHandler.cxx:70
 AliHLTConfigurationHandler.cxx:71
 AliHLTConfigurationHandler.cxx:72
 AliHLTConfigurationHandler.cxx:73
 AliHLTConfigurationHandler.cxx:74
 AliHLTConfigurationHandler.cxx:75
 AliHLTConfigurationHandler.cxx:76
 AliHLTConfigurationHandler.cxx:77
 AliHLTConfigurationHandler.cxx:78
 AliHLTConfigurationHandler.cxx:79
 AliHLTConfigurationHandler.cxx:80
 AliHLTConfigurationHandler.cxx:81
 AliHLTConfigurationHandler.cxx:82
 AliHLTConfigurationHandler.cxx:83
 AliHLTConfigurationHandler.cxx:84
 AliHLTConfigurationHandler.cxx:85
 AliHLTConfigurationHandler.cxx:86
 AliHLTConfigurationHandler.cxx:87
 AliHLTConfigurationHandler.cxx:88
 AliHLTConfigurationHandler.cxx:89
 AliHLTConfigurationHandler.cxx:90
 AliHLTConfigurationHandler.cxx:91
 AliHLTConfigurationHandler.cxx:92
 AliHLTConfigurationHandler.cxx:93
 AliHLTConfigurationHandler.cxx:94
 AliHLTConfigurationHandler.cxx:95
 AliHLTConfigurationHandler.cxx:96
 AliHLTConfigurationHandler.cxx:97
 AliHLTConfigurationHandler.cxx:98
 AliHLTConfigurationHandler.cxx:99
 AliHLTConfigurationHandler.cxx:100
 AliHLTConfigurationHandler.cxx:101
 AliHLTConfigurationHandler.cxx:102
 AliHLTConfigurationHandler.cxx:103
 AliHLTConfigurationHandler.cxx:104
 AliHLTConfigurationHandler.cxx:105
 AliHLTConfigurationHandler.cxx:106
 AliHLTConfigurationHandler.cxx:107
 AliHLTConfigurationHandler.cxx:108
 AliHLTConfigurationHandler.cxx:109
 AliHLTConfigurationHandler.cxx:110
 AliHLTConfigurationHandler.cxx:111
 AliHLTConfigurationHandler.cxx:112
 AliHLTConfigurationHandler.cxx:113
 AliHLTConfigurationHandler.cxx:114
 AliHLTConfigurationHandler.cxx:115
 AliHLTConfigurationHandler.cxx:116
 AliHLTConfigurationHandler.cxx:117
 AliHLTConfigurationHandler.cxx:118
 AliHLTConfigurationHandler.cxx:119
 AliHLTConfigurationHandler.cxx:120
 AliHLTConfigurationHandler.cxx:121
 AliHLTConfigurationHandler.cxx:122
 AliHLTConfigurationHandler.cxx:123
 AliHLTConfigurationHandler.cxx:124
 AliHLTConfigurationHandler.cxx:125
 AliHLTConfigurationHandler.cxx:126
 AliHLTConfigurationHandler.cxx:127
 AliHLTConfigurationHandler.cxx:128
 AliHLTConfigurationHandler.cxx:129
 AliHLTConfigurationHandler.cxx:130
 AliHLTConfigurationHandler.cxx:131
 AliHLTConfigurationHandler.cxx:132
 AliHLTConfigurationHandler.cxx:133
 AliHLTConfigurationHandler.cxx:134
 AliHLTConfigurationHandler.cxx:135
 AliHLTConfigurationHandler.cxx:136
 AliHLTConfigurationHandler.cxx:137
 AliHLTConfigurationHandler.cxx:138
 AliHLTConfigurationHandler.cxx:139
 AliHLTConfigurationHandler.cxx:140
 AliHLTConfigurationHandler.cxx:141
 AliHLTConfigurationHandler.cxx:142
 AliHLTConfigurationHandler.cxx:143
 AliHLTConfigurationHandler.cxx:144
 AliHLTConfigurationHandler.cxx:145
 AliHLTConfigurationHandler.cxx:146
 AliHLTConfigurationHandler.cxx:147
 AliHLTConfigurationHandler.cxx:148
 AliHLTConfigurationHandler.cxx:149
 AliHLTConfigurationHandler.cxx:150
 AliHLTConfigurationHandler.cxx:151
 AliHLTConfigurationHandler.cxx:152
 AliHLTConfigurationHandler.cxx:153
 AliHLTConfigurationHandler.cxx:154
 AliHLTConfigurationHandler.cxx:155
 AliHLTConfigurationHandler.cxx:156
 AliHLTConfigurationHandler.cxx:157
 AliHLTConfigurationHandler.cxx:158
 AliHLTConfigurationHandler.cxx:159
 AliHLTConfigurationHandler.cxx:160
 AliHLTConfigurationHandler.cxx:161
 AliHLTConfigurationHandler.cxx:162
 AliHLTConfigurationHandler.cxx:163
 AliHLTConfigurationHandler.cxx:164
 AliHLTConfigurationHandler.cxx:165
 AliHLTConfigurationHandler.cxx:166
 AliHLTConfigurationHandler.cxx:167
 AliHLTConfigurationHandler.cxx:168
 AliHLTConfigurationHandler.cxx:169
 AliHLTConfigurationHandler.cxx:170
 AliHLTConfigurationHandler.cxx:171
 AliHLTConfigurationHandler.cxx:172
 AliHLTConfigurationHandler.cxx:173
 AliHLTConfigurationHandler.cxx:174
 AliHLTConfigurationHandler.cxx:175
 AliHLTConfigurationHandler.cxx:176
 AliHLTConfigurationHandler.cxx:177
 AliHLTConfigurationHandler.cxx:178
 AliHLTConfigurationHandler.cxx:179
 AliHLTConfigurationHandler.cxx:180
 AliHLTConfigurationHandler.cxx:181
 AliHLTConfigurationHandler.cxx:182
 AliHLTConfigurationHandler.cxx:183
 AliHLTConfigurationHandler.cxx:184
 AliHLTConfigurationHandler.cxx:185
 AliHLTConfigurationHandler.cxx:186
 AliHLTConfigurationHandler.cxx:187
 AliHLTConfigurationHandler.cxx:188
 AliHLTConfigurationHandler.cxx:189
 AliHLTConfigurationHandler.cxx:190
 AliHLTConfigurationHandler.cxx:191
 AliHLTConfigurationHandler.cxx:192
 AliHLTConfigurationHandler.cxx:193
 AliHLTConfigurationHandler.cxx:194
 AliHLTConfigurationHandler.cxx:195
 AliHLTConfigurationHandler.cxx:196
 AliHLTConfigurationHandler.cxx:197
 AliHLTConfigurationHandler.cxx:198
 AliHLTConfigurationHandler.cxx:199
 AliHLTConfigurationHandler.cxx:200
 AliHLTConfigurationHandler.cxx:201
 AliHLTConfigurationHandler.cxx:202
 AliHLTConfigurationHandler.cxx:203
 AliHLTConfigurationHandler.cxx:204
 AliHLTConfigurationHandler.cxx:205
 AliHLTConfigurationHandler.cxx:206
 AliHLTConfigurationHandler.cxx:207
 AliHLTConfigurationHandler.cxx:208
 AliHLTConfigurationHandler.cxx:209
 AliHLTConfigurationHandler.cxx:210
 AliHLTConfigurationHandler.cxx:211
 AliHLTConfigurationHandler.cxx:212
 AliHLTConfigurationHandler.cxx:213
 AliHLTConfigurationHandler.cxx:214
 AliHLTConfigurationHandler.cxx:215
 AliHLTConfigurationHandler.cxx:216
 AliHLTConfigurationHandler.cxx:217
 AliHLTConfigurationHandler.cxx:218
 AliHLTConfigurationHandler.cxx:219
 AliHLTConfigurationHandler.cxx:220
 AliHLTConfigurationHandler.cxx:221
 AliHLTConfigurationHandler.cxx:222
 AliHLTConfigurationHandler.cxx:223
 AliHLTConfigurationHandler.cxx:224
 AliHLTConfigurationHandler.cxx:225
 AliHLTConfigurationHandler.cxx:226
 AliHLTConfigurationHandler.cxx:227
 AliHLTConfigurationHandler.cxx:228
 AliHLTConfigurationHandler.cxx:229
 AliHLTConfigurationHandler.cxx:230
 AliHLTConfigurationHandler.cxx:231
 AliHLTConfigurationHandler.cxx:232
 AliHLTConfigurationHandler.cxx:233
 AliHLTConfigurationHandler.cxx:234
 AliHLTConfigurationHandler.cxx:235
 AliHLTConfigurationHandler.cxx:236
 AliHLTConfigurationHandler.cxx:237
 AliHLTConfigurationHandler.cxx:238
 AliHLTConfigurationHandler.cxx:239
 AliHLTConfigurationHandler.cxx:240
 AliHLTConfigurationHandler.cxx:241
 AliHLTConfigurationHandler.cxx:242
 AliHLTConfigurationHandler.cxx:243
 AliHLTConfigurationHandler.cxx:244
 AliHLTConfigurationHandler.cxx:245
 AliHLTConfigurationHandler.cxx:246
 AliHLTConfigurationHandler.cxx:247
 AliHLTConfigurationHandler.cxx:248
 AliHLTConfigurationHandler.cxx:249
 AliHLTConfigurationHandler.cxx:250
 AliHLTConfigurationHandler.cxx:251
 AliHLTConfigurationHandler.cxx:252
 AliHLTConfigurationHandler.cxx:253
 AliHLTConfigurationHandler.cxx:254
 AliHLTConfigurationHandler.cxx:255
 AliHLTConfigurationHandler.cxx:256
 AliHLTConfigurationHandler.cxx:257
 AliHLTConfigurationHandler.cxx:258
 AliHLTConfigurationHandler.cxx:259
 AliHLTConfigurationHandler.cxx:260
 AliHLTConfigurationHandler.cxx:261
 AliHLTConfigurationHandler.cxx:262
 AliHLTConfigurationHandler.cxx:263
 AliHLTConfigurationHandler.cxx:264
 AliHLTConfigurationHandler.cxx:265
 AliHLTConfigurationHandler.cxx:266
 AliHLTConfigurationHandler.cxx:267
 AliHLTConfigurationHandler.cxx:268
 AliHLTConfigurationHandler.cxx:269
 AliHLTConfigurationHandler.cxx:270
 AliHLTConfigurationHandler.cxx:271
 AliHLTConfigurationHandler.cxx:272
 AliHLTConfigurationHandler.cxx:273
 AliHLTConfigurationHandler.cxx:274
 AliHLTConfigurationHandler.cxx:275
 AliHLTConfigurationHandler.cxx:276
 AliHLTConfigurationHandler.cxx:277
 AliHLTConfigurationHandler.cxx:278
 AliHLTConfigurationHandler.cxx:279
 AliHLTConfigurationHandler.cxx:280
 AliHLTConfigurationHandler.cxx:281
 AliHLTConfigurationHandler.cxx:282
 AliHLTConfigurationHandler.cxx:283
 AliHLTConfigurationHandler.cxx:284
 AliHLTConfigurationHandler.cxx:285
 AliHLTConfigurationHandler.cxx:286
 AliHLTConfigurationHandler.cxx:287
 AliHLTConfigurationHandler.cxx:288
 AliHLTConfigurationHandler.cxx:289
 AliHLTConfigurationHandler.cxx:290
 AliHLTConfigurationHandler.cxx:291
 AliHLTConfigurationHandler.cxx:292
 AliHLTConfigurationHandler.cxx:293
 AliHLTConfigurationHandler.cxx:294
 AliHLTConfigurationHandler.cxx:295
 AliHLTConfigurationHandler.cxx:296
 AliHLTConfigurationHandler.cxx:297
 AliHLTConfigurationHandler.cxx:298
 AliHLTConfigurationHandler.cxx:299
 AliHLTConfigurationHandler.cxx:300
 AliHLTConfigurationHandler.cxx:301
 AliHLTConfigurationHandler.cxx:302
 AliHLTConfigurationHandler.cxx:303
 AliHLTConfigurationHandler.cxx:304
 AliHLTConfigurationHandler.cxx:305
 AliHLTConfigurationHandler.cxx:306
 AliHLTConfigurationHandler.cxx:307
 AliHLTConfigurationHandler.cxx:308
 AliHLTConfigurationHandler.cxx:309
 AliHLTConfigurationHandler.cxx:310
 AliHLTConfigurationHandler.cxx:311
 AliHLTConfigurationHandler.cxx:312
 AliHLTConfigurationHandler.cxx:313
 AliHLTConfigurationHandler.cxx:314
 AliHLTConfigurationHandler.cxx:315
 AliHLTConfigurationHandler.cxx:316
 AliHLTConfigurationHandler.cxx:317
 AliHLTConfigurationHandler.cxx:318
 AliHLTConfigurationHandler.cxx:319
 AliHLTConfigurationHandler.cxx:320
 AliHLTConfigurationHandler.cxx:321
 AliHLTConfigurationHandler.cxx:322
 AliHLTConfigurationHandler.cxx:323
 AliHLTConfigurationHandler.cxx:324
 AliHLTConfigurationHandler.cxx:325
 AliHLTConfigurationHandler.cxx:326
 AliHLTConfigurationHandler.cxx:327
 AliHLTConfigurationHandler.cxx:328
 AliHLTConfigurationHandler.cxx:329
 AliHLTConfigurationHandler.cxx:330
 AliHLTConfigurationHandler.cxx:331
 AliHLTConfigurationHandler.cxx:332
 AliHLTConfigurationHandler.cxx:333
 AliHLTConfigurationHandler.cxx:334
 AliHLTConfigurationHandler.cxx:335
 AliHLTConfigurationHandler.cxx:336
 AliHLTConfigurationHandler.cxx:337
 AliHLTConfigurationHandler.cxx:338
 AliHLTConfigurationHandler.cxx:339
 AliHLTConfigurationHandler.cxx:340
 AliHLTConfigurationHandler.cxx:341
 AliHLTConfigurationHandler.cxx:342
 AliHLTConfigurationHandler.cxx:343