Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IApplication.h
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/* IApplication.h (C) 2000-2022 */
9/* */
10/* Interface de l'application. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IAPPLICATION_H
13#define ARCANE_IAPPLICATION_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18#include "arcane/IBase.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29class ApplicationInfo;
30class IMainFactory;
31class IArcaneMain;
32class IRessourceMng;
33class IIOMng;
34class XmlNode;
35class ICodeService;
36class IParallelMng;
37class IParallelSuperMng;
38class ISession;
39class IDataFactory;
40class IPhysicalUnitSystemService;
41class ITraceMngPolicy;
42class IConfigurationMng;
43class ApplicationBuildInfo;
44class DotNetRuntimeInitialisationInfo;
45
46/*---------------------------------------------------------------------------*/
47/*---------------------------------------------------------------------------*/
48/*!
49 * \brief Interface de l'application.
50 *
51 Cette classe renferme les informations sur la configuration de l'exécutable.
52
53 Il n'existe qu'une seule instance de cette classe par processus (singleton).
54 */
55class ARCANE_CORE_EXPORT IApplication
56: public IBase
57{
58 public:
59
60 //! Gestionnaire superviseur du parallélisme
62
63 //! Gestionnaire un superviseur séquentiel du parallélisme
65
66 //! Gestionnaire des entrées/sorties.
67 virtual IIOMng* ioMng() =0;
68
69 //! Gestionnaire des configurations d'exécution
71
72 //! Fabrique de donnée
73 ARCCORE_DEPRECATED_2021("Use dataFactoryMng() instead")
74 virtual IDataFactory* dataFactory() =0;
75
76 //! Fabrique de donnée
77 virtual IDataFactoryMng* dataFactoryMng() const =0;
78
79 //! Informations sur l'exécutable
80 virtual const ApplicationInfo& applicationInfo() const =0;
81
82 //! Informations sur les paramètres de construction de l'instance
83 virtual const ApplicationBuildInfo& applicationBuildInfo() const =0;
84
85 //! Informations d'initialisation du runtime '.Net'.
86 virtual const DotNetRuntimeInitialisationInfo& dotnetRuntimeInitialisationInfo() const =0;
87
88 //! Informations d'initialisation du runtime pour les accélérateurs
89 virtual const AcceleratorRuntimeInitialisationInfo& acceleratorRuntimeInitialisationInfo() const =0;
90
91 //! Numéro de version de l'application
92 virtual String versionStr() const =0;
93
94 //! Numéro de version principal (sans la béta) de l'application
95 virtual String mainVersionStr() const =0;
96
97 //! Numéro de version majeur et mineure sous la forme M.m
98 virtual String majorAndMinorVersionStr() const =0;
99
100 //! Informations sur les options de compilation de l'application
101 virtual String targetinfoStr() const =0;
102
103 //! Nom du code
104 virtual String codeName() const =0;
105
106 //! Nom de l'application
107 virtual String applicationName() const =0;
108
109 //! Nom de l'utilisateur
110 virtual String userName() const =0;
111
112 /*
113 * \brief Contenu du fichier Xml de configuration du code.
114 */
115 virtual ByteConstSpan configBuffer() const =0;
116
117 /*
118 * \brief Contenu du fichier Xml de configuration utilisateur
119 */
120 virtual ByteConstSpan userConfigBuffer() const =0;
121
122 //! Chemin du répertoire des configurations utilisateur
123 virtual String userConfigPath() const =0;
124
125 //! Ajoute la session \a session
126 virtual void addSession(ISession* session) =0;
127
128 //! Supprime la session \a session
129 virtual void removeSession(ISession* session) =0;
130
131 //! Liste des sessions
132 virtual SessionCollection sessions() =0;
133
134 //! Manufacture principale.
135 virtual IMainFactory* mainFactory() const =0;
136
137 //! Liste des informations sur les fabriques des modules
138 virtual ModuleFactoryInfoCollection moduleFactoryInfos() =0;
139
140 //! Liste des fabriques de service.
141 virtual ServiceFactory2Collection serviceFactories2() =0;
142
143 /*!
144 * \brief Retourne le chargeur de cas correspondant au fichier
145 * donné par \a file_name.
146 */
147 virtual Ref<ICodeService> getCodeService(const String& file_name) =0;
148
149 //! Indique que certains objets sont gérés via un ramasse miette.
150 virtual bool hasGarbageCollector() const =0;
151
152 //! Service gérant les systèmes d'unités physiques
153 virtual IPhysicalUnitSystemService* getPhysicalUnitSystemService() =0;
154
155 //! Politique de configuration d'un gestionnaire de trace.
156 virtual ITraceMngPolicy* getTraceMngPolicy() =0;
157
158 /*!
159 * \brief Créé et initialise une instance de ITraceMng.
160 *
161 * L'instance créée est initialisée suivant la politique spécifiée
162 * par getTraceMngPolicy().
163 * Si les sorties fichiers sont activées, l'instance créé sortira
164 * ses informations dans un fichier suffixé par \a file_suffix.
165 *
166 * Les propriétés de verbosité de l'instance créée sont héritées de
167 * \a parent_trace s'il n'est pas nul.
168 */
169 virtual ITraceMng* createAndInitializeTraceMng(ITraceMng* parent_trace,
170 const String& file_suffix) =0;
171};
172
173/*---------------------------------------------------------------------------*/
174/*---------------------------------------------------------------------------*/
175
176} // End namespace Arcane
177
178/*---------------------------------------------------------------------------*/
179/*---------------------------------------------------------------------------*/
180
181#endif
Informations pour construire une instance de IApplication.
Informations sur une application.
Informations pour l'initialisation du runtime '.Net'.
Interface de l'application.
virtual IIOMng * ioMng()=0
Gestionnaire des entrées/sorties.
virtual IConfigurationMng * configurationMng() const =0
Gestionnaire des configurations d'exécution.
virtual IParallelSuperMng * parallelSuperMng()=0
Gestionnaire superviseur du parallélisme.
virtual IParallelSuperMng * sequentialParallelSuperMng()=0
Gestionnaire un superviseur séquentiel du parallélisme.
Interface de la classe de base des objets principaux arcane.
Definition IBase.h:38
Interface d'un chargeur de cas.
Gestionnaire de configuration.
Interface du gestionnaire des entrées sorties.
Definition IIOMng.h:42
Interface d'une session d'exécution d'un cas.
Definition ISession.h:44
Interface du gestionnaire de configuration d'un gestionnnaire de trace.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Collection< Internal::IServiceFactory2 * > ServiceFactory2Collection
Collection de fabriques de service.
Span< const std::byte > ByteConstSpan
Vue en lecture seule d'un tableau à une dimension de caractères.
Definition UtilsTypes.h:706
Collection< IModuleFactoryInfo * > ModuleFactoryInfoCollection
Collection d'informations sur les fabriques de module.
Collection< ISession * > SessionCollection
Collection de sessions.