Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ArcaneDirectExecution.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ArcaneDirectExecution.cc (C) 2000-2011 */
9/* */
10/* Service d'exécution directe. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/ArcanePrecomp.h"
15
16#include "arcane/ISubDomain.h"
17#include "arcane/IDirectExecution.h"
18
19#include "arcane/std/ArcaneDirectExecution_axl.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24ARCANE_BEGIN_NAMESPACE
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
34class ArcaneDirectExecution
36{
37 public:
38
39 ArcaneDirectExecution(const ServiceBuildInfo& sb)
40 : ArcaneArcaneDirectExecutionObject(sb), m_parallel_mng(0)
41 {
42 sb.subDomain()->setDirectExecution(this);
43 }
44 virtual ~ArcaneDirectExecution(){}
45
46 public:
47
48 virtual void build() {}
49 virtual void initialize(){}
50 virtual void execute()
51 {
52 Integer nb_tool = options()->tool().size();
53 for( Integer i=0; i<nb_tool; ++i )
54 options()->tool()[i]->execute();
55 }
56 virtual bool isActive() const
57 {
58 Integer nb_tool = options()->tool().size();
59 info() << "** NB_TOOL2=" << nb_tool;
60 return options()->tool().size()!=0;
61 }
62 virtual void setParallelMng(IParallelMng* pm)
63 {
64 m_parallel_mng = pm;
65 }
66 public:
67
68 IParallelMng* parallelMng() const { return m_parallel_mng; }
69
70 private:
71 IParallelMng* m_parallel_mng;
72};
73
74/*---------------------------------------------------------------------------*/
75/*---------------------------------------------------------------------------*/
76
77ARCANE_REGISTER_SERVICE_ARCANEDIRECTEXECUTION(ArcaneDirectExecution,ArcaneDirectExecution);
78
79/*---------------------------------------------------------------------------*/
80/*---------------------------------------------------------------------------*/
81
82ARCANE_END_NAMESPACE
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
ArcaneArcaneDirectExecutionObject(const Arcane::ServiceBuildInfo &sbi)
Constructeur.
CaseOptionsArcaneDirectExecution * options() const
Options du jeu de données du service.
virtual void execute()
Exécute l'opération du service.
virtual void setParallelMng(IParallelMng *pm)
Positionne le gestionnaire de parallèlisme associé. Cette méthode doit être appelée avant execute()
virtual void build()
Construction de niveau build du service.
virtual bool isActive() const
Vrai si le service est actif.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual void setDirectExecution(IDirectExecution *v)=0
Positionne le service d'exécution directe.
ISubDomain * subDomain() const
Accès au ISubDomain associé.
Structure contenant les informations pour créer un service.
TraceMessage info() const
Flot pour un message d'information.
Int32 Integer
Type représentant un entier.