Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
driverlib/ArcaneCodeService.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/* ArcaneCodeService.cc (C) 2000-2012 */
9/* */
10/* Service de code générique Arcane. */
11/* Ce service est une recopie locale de celui de tests pour le driver */
12/*---------------------------------------------------------------------------*/
13/*---------------------------------------------------------------------------*/
14
15#include "arcane/CodeService.h"
16#include "arcane/utils/ArcanePrecomp.h"
17
18#include "arcane/ISession.h"
19#include "arcane/ISubDomain.h"
20#include "arcane/IParallelMng.h"
21#include "arcane/Service.h"
22
23#include "arcane/impl/TimeLoopReader.h"
24
25#include "arcane/std/ArcaneSession.h"
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30ARCANE_BEGIN_NAMESPACE
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35class ArcaneCodeService
36: public CodeService
37{
38 public:
39
40 ArcaneCodeService(const ServiceBuildInfo& sbi);
41 virtual ~ArcaneCodeService();
42
43 public:
44
45 virtual bool parseArgs(StringList& args);
46 virtual ISession* createSession();
47 virtual void initCase(ISubDomain* sub_domain,bool is_continue);
48
49 public:
50
51 void build() {}
52
53 protected:
54
55 virtual void _preInitializeSubDomain(ISubDomain* sd);
56
57 private:
58};
59
60/*---------------------------------------------------------------------------*/
61/*---------------------------------------------------------------------------*/
62
63ArcaneCodeService::
64ArcaneCodeService(const ServiceBuildInfo& sbi)
65: CodeService(sbi)
66{
67 _addExtension(String("arc"));
68}
69
70/*---------------------------------------------------------------------------*/
71/*---------------------------------------------------------------------------*/
72
73ArcaneCodeService::
74~ArcaneCodeService()
75{
76}
77
78/*---------------------------------------------------------------------------*/
79/*---------------------------------------------------------------------------*/
80
81void ArcaneCodeService::
82_preInitializeSubDomain(ISubDomain*)
83{
84}
85
86/*---------------------------------------------------------------------------*/
87/*---------------------------------------------------------------------------*/
88
90initCase(ISubDomain* sub_domain,bool is_continue)
91{
92 {
93 TimeLoopReader stl(_application());
94 stl.readTimeLoops();
95 stl.registerTimeLoops(sub_domain);
96 stl.setUsedTimeLoop(sub_domain);
97 }
98 CodeService::initCase(sub_domain,is_continue);
99 if (sub_domain->parallelMng()->isMasterIO())
100 sub_domain->session()->writeExecInfoFile();
101}
102
103/*---------------------------------------------------------------------------*/
104/*---------------------------------------------------------------------------*/
105
108{
109 ArcaneSession* session = new ArcaneSession(_application());
110 session->build();
111 _application()->addSession(session);
112 return session;
113}
114
115/*---------------------------------------------------------------------------*/
116/*---------------------------------------------------------------------------*/
117
120{
121 ARCANE_UNUSED(args);
122 return false;
123}
124
125/*---------------------------------------------------------------------------*/
126/*---------------------------------------------------------------------------*/
127
129
130/*---------------------------------------------------------------------------*/
131/*---------------------------------------------------------------------------*/
132
133ARCANE_END_NAMESPACE
134
135/*---------------------------------------------------------------------------*/
136/*---------------------------------------------------------------------------*/
#define ARCANE_REGISTER_APPLICATION_FACTORY(aclass, ainterface, aname)
Enregistre un service de fabrique pour la classe aclass.
virtual bool parseArgs(StringList &args)
Analyse les arguments de la ligne de commandes.
virtual ISession * createSession()
Crée une session.
virtual void initCase(ISubDomain *sub_domain, bool is_continue)
Initialise la session session.
virtual void build()
Construit les membres de l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas é...
Classe abstraite d'un service de code.
Definition CodeService.h:44
virtual void initCase(ISubDomain *sub_domain, bool is_continue)
Initialise la session session.
Interface d'un chargeur de cas.
virtual bool isMasterIO() const =0
true si l'instance est un gestionnaire maître des entrées/sorties.
Interface d'une session d'exécution d'un cas.
Definition ISession.h:44
virtual void writeExecInfoFile()=0
Ecrit le fichier des informations sur l'exécution.
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
virtual IParallelMng * parallelMng()=0
Retourne le gestionnaire de parallélisme.
virtual ISession * session() const =0
Session.
Structure contenant les informations pour créer un service.
Chaîne de caractères unicode.
Functor de chargement d'une boucle en temps.
void setUsedTimeLoop(ISubDomain *sd)
Positionne la boucle en temps utilisée dans le gestionnaire sd.
void readTimeLoops()
Effectue la lecture des boucles en temps disponible.
void registerTimeLoops(ISubDomain *sd)
Enregistre la liste des boucles en temps dans le gestionnaire sd.
List< String > StringList
Tableau de chaînes de caractères unicode.
Definition UtilsTypes.h:596