adding class to describe a component configuration including the online information
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 29 Nov 2010 13:14:00 +0000 (13:14 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 29 Nov 2010 13:14:00 +0000 (13:14 +0000)
HLT/BASE/AliHLTComponentConfiguration.cxx [new file with mode: 0644]
HLT/BASE/AliHLTComponentConfiguration.h [new file with mode: 0644]
HLT/BASE/HLTbaseLinkDef.h
HLT/libHLTbase.pkg

diff --git a/HLT/BASE/AliHLTComponentConfiguration.cxx b/HLT/BASE/AliHLTComponentConfiguration.cxx
new file mode 100644 (file)
index 0000000..1659cdc
--- /dev/null
@@ -0,0 +1,96 @@
+// $Id$
+
+///**************************************************************************
+///* This file is property of and copyright by the ALICE HLT Project        * 
+///* 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   AliHLTComponentConfiguration.cxx
+/// @author Matthias Richter
+/// @date   2010-11-26
+/// @brief  HLT configuration description for a single component.
+/// @note   The class is used in Offline (AliRoot) context
+
+#include "AliHLTComponentConfiguration.h"
+
+/** ROOT macro for the implementation of ROOT specific class methods */
+ClassImp(AliHLTConfiguration)
+
+AliHLTComponentConfiguration::AliHLTComponentConfiguration()
+  : AliHLTConfiguration()
+  , fLibrary()
+  , fNodeNames()
+  , fOnlineCommand()
+{
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+AliHLTComponentConfiguration::AliHLTComponentConfiguration(const char* id,
+                                                          const char* component,
+                                                          const char* sources,
+                                                          const char* arguments)
+  : AliHLTConfiguration(id, component, sources, arguments)
+  , fLibrary()
+  , fNodeNames()
+  , fOnlineCommand()
+{
+  // constructor
+}
+
+AliHLTComponentConfiguration::AliHLTComponentConfiguration(const AliHLTComponentConfiguration& src)
+  : AliHLTConfiguration(src)
+  , fLibrary(src.fLibrary)
+  , fNodeNames(src.fNodeNames)
+  , fOnlineCommand(src.fOnlineCommand)
+{
+  // copy constructor
+}
+
+AliHLTComponentConfiguration& AliHLTComponentConfiguration::operator=(const AliHLTComponentConfiguration& src)
+{
+  // assignment operator
+  if (this==&src) return *this;
+  AliHLTConfiguration::operator=(src);
+  fLibrary=src.fLibrary;
+  fNodeNames=src.fNodeNames;
+  fOnlineCommand=src.fOnlineCommand;
+  return *this;
+}
+
+AliHLTComponentConfiguration::~AliHLTComponentConfiguration()
+{
+  // destructor
+}
+
+void AliHLTComponentConfiguration::SetOnlineCommand(const char* cmd)
+{
+  // set the online command string
+
+  // TODO: think about parsing the string directly and set the
+  // various other parameters.
+  fOnlineCommand=cmd;
+}
+
+void AliHLTComponentConfiguration::Print(const char* option) const
+{
+  // print information
+
+  // TODO: implement proper function for this class
+
+  AliHLTConfiguration::Print(option);
+}
diff --git a/HLT/BASE/AliHLTComponentConfiguration.h b/HLT/BASE/AliHLTComponentConfiguration.h
new file mode 100644 (file)
index 0000000..a396630
--- /dev/null
@@ -0,0 +1,88 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTCOMPONENTCONFIGURATION_H
+#define ALIHLTCOMPONENTCONFIGURATION_H
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//* See cxx source for full Copyright notice                               *
+
+/// @file   AliHLTComponentConfiguration.h
+/// @author Matthias Richter
+/// @date   2010-11-26
+/// @brief  HLT configuration description for a single component.
+/// @note   The class is used in Offline (AliRoot) context
+
+#include "AliHLTConfiguration.h"
+
+/**
+ * @class AliHLTComponentConfiguration
+ * @brief Description of an HLT component configuration.
+ *
+ * In addition to the base class AliHLTConfiguration the additional online
+ * component parameters are available in this class
+ * - node name
+ * - shared memory settings
+ *
+ * This class is only used in the HLT offline environment, see @ref alihlt_system
+ * for more details.
+ *
+ * @ingroup alihlt_system
+ */
+class AliHLTComponentConfiguration : public AliHLTConfiguration {
+ public:
+  /**
+   * standard constructor. The configuration is automatically registered in the
+   * global configuration manager
+   */
+  AliHLTComponentConfiguration();
+  /**
+   * constructor. The configuration is automatically registered in the
+   * global configuration manager
+   * @param id         unique id of the configuration
+   * @param component  component id
+   * @param sources    blank separated list of source configuration ids
+   * @param arguments  argument string passed to the component at initialization
+   */
+  AliHLTComponentConfiguration(const char* id, const char* component,
+                     const char* sources, const char* arguments);
+  /** copy constructor */
+  AliHLTComponentConfiguration(const AliHLTComponentConfiguration& src);
+  /** assignment op */
+  AliHLTComponentConfiguration& operator=(const AliHLTComponentConfiguration& src);
+  /** destructor */
+  virtual ~AliHLTComponentConfiguration();
+
+  void SetComponentLibrary(const char* library) {fLibrary=library;}
+
+  void SetNodeNames(const char* nodes) {fNodeNames=nodes;}
+
+  void AddNode(const char* node) {
+    if (!node) return;
+    if (!fNodeNames.IsNull()) fNodeNames+=" "; fNodeNames+=node;
+  }
+
+  /// set and parse the online command string
+  void SetOnlineCommand(const char* cmd);
+
+  /**
+   * overloaded from TObject
+   * options:
+   */
+  virtual void Print(const char* option="") const;
+
+ protected:
+  
+ private:
+  /// component library
+  TString fLibrary; // component library
+
+  /// list of nodes of the component instances
+  TString fNodeNames; // list of node names
+
+  /// original command in the online configuration
+  TString fOnlineCommand; // original online command
+
+  ClassDef(AliHLTComponentConfiguration, 1);
+};
+
+#endif
index 51a225b..e100e11 100644 (file)
@@ -11,6 +11,7 @@
 #pragma link C++ class AliHLTProcessor+;
 #pragma link C++ class AliHLTCalibrationProcessor+;
 #pragma link C++ class AliHLTConfiguration+;
+#pragma link C++ class AliHLTComponentConfiguration+;
 #pragma link C++ class AliHLTConfigurationHandler+;
 #pragma link C++ class AliHLTOnlineConfiguration+;
 #pragma link C++ class AliHLTTTreeProcessor+;
index aaa047a..bfc8272 100644 (file)
@@ -12,6 +12,7 @@ CLASS_HDRS:=          AliHLTComponent.h \
                AliHLTProcessor.h \
                AliHLTCalibrationProcessor.h \
                AliHLTConfiguration.h \
+               AliHLTComponentConfiguration.h \
                AliHLTConfigurationHandler.h \
                AliHLTOnlineConfiguration.h \
                AliHLTTTreeProcessor.h \