Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
#ifndef FWCore_Framework_ModuleRegistryUtilities_h
#define FWCore_Framework_ModuleRegistryUtilities_h

#include <string>
#include <vector>
#include <mutex>
namespace edm {
  class ModuleRegistry;
  class ActivityRegistry;
  class ProductRegistry;
  class StreamContext;
  class GlobalContext;
  namespace eventsetup {
    class ESRecordsToProductResolverIndices;
  }
  class ProcessBlockHelperBase;
  class ExceptionCollector;

  void finishModulesInitialization(ModuleRegistry& iModuleRegistry,
                                   ProductRegistry const& iProductRegistry,
                                   eventsetup::ESRecordsToProductResolverIndices const& iESIndices,
                                   ProcessBlockHelperBase const& processBlockHelperBase,
                                   std::string const& processName);
  /** beginJobFailedForModule has the module id of each module which threw an exception during
     * the call to beginJob function.  The vector should be passed to `runEndJobForModules`.
     * If an exception is thrown, it will be of type cms::Exception.
     */
  void runBeginJobForModules(GlobalContext const& iGlobalContext,
                             ModuleRegistry& iModuleRegistry,
                             edm::ActivityRegistry& iActivityRegistry,
                             std::vector<unsigned int>& beginJobFailedForModule) noexcept(false);

  /// The vector holds module id for modules which should not have their endJob called.
  void runEndJobForModules(GlobalContext const& iGlobalContext,
                           ModuleRegistry& iModuleRegistry,
                           ActivityRegistry& iRegistry,
                           ExceptionCollector& collector,
                           std::vector<unsigned int> const& beginJobFailedForModule) noexcept;

  /** beginStreamFailedForModule holds module id for each module which threw an exception during
     * the call to beginStream function. This vector is used to determine which modules should not
     * have their endStream called. The vector should be passed to `runEndStreamForModules`.
     * If an exception is thrown, it will be of type cms::Exception.
     */
  void runBeginStreamForModules(StreamContext const& iStreamContext,
                                ModuleRegistry& iModuleRegistry,
                                edm::ActivityRegistry& iActivityRegistry,
                                std::vector<unsigned int>& beginStreamFailedForModule) noexcept(false);

  /// The vector hold module id for modules which should not have their endStream called.
  void runEndStreamForModules(StreamContext const& iStreamContext,
                              ModuleRegistry& iModuleRegistry,
                              ActivityRegistry& iRegistry,
                              ExceptionCollector& collector,
                              std::mutex& collectorMutex,
                              std::vector<unsigned int> const& beginStreamFailedForModule) noexcept;

}  // namespace edm
#endif  // FWCore_Framework_ModuleRegistryUtilities_h