Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Application.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/* Application.h (C) 2000-2022 */
9/* */
10/* Implémentation IApplication. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMPL_APPLICATION_H
13#define ARCANE_IMPL_APPLICATION_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/List.h"
18#include "arcane/utils/ScopedPtr.h"
19#include "arcane/utils/String.h"
20#include "arcane/utils/ApplicationInfo.h"
21#include "arcane/utils/NullThreadMng.h"
22
23#include "arcane/IApplication.h"
24#include "arcane/XmlNode.h"
25
26#include "arccore/base/ReferenceCounter.h"
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31namespace Arcane
32{
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
37class IServiceAndModuleFactoryMng;
38class IProcessorAffinityService;
39class ISymbolizerService;
40class ApplicationBuildInfo;
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
47class ARCANE_IMPL_EXPORT Application
48: public IApplication
49{
50 public:
51
52 explicit Application(IArcaneMain*);
53 ~Application() override;
54
55 public:
56
57 void build() override;
58 void initialize() override;
59
60 public:
61
62 IBase* objectParent() const override { return nullptr; }
63 String objectNamespaceURI() const override { return m_namespace_uri; }
64 String objectLocalName() const override { return m_local_name; }
65 VersionInfo objectVersion() const override { return VersionInfo(1,0,0); }
66
67 public:
68
69 ITraceMng* traceMng() const override { return m_trace.get(); }
70 IRessourceMng* ressourceMng() const override { return m_ressource_mng; }
71 IServiceMng* serviceMng() const override { return m_service_mng; }
72
73 IParallelSuperMng* parallelSuperMng() override { return m_parallel_super_mng.get(); }
75 {
76 return m_sequential_parallel_super_mng;
77 }
78 IIOMng* ioMng() override { return m_io_mng; }
79 IConfigurationMng* configurationMng() const override { return m_configuration_mng; }
80 IDataFactory* dataFactory() override;
81 IDataFactoryMng* dataFactoryMng() const override;
82 const ApplicationInfo& applicationInfo() const override { return m_exe_info; }
83 const ApplicationBuildInfo& applicationBuildInfo() const override;
84 const DotNetRuntimeInitialisationInfo& dotnetRuntimeInitialisationInfo() const override;
85 const AcceleratorRuntimeInitialisationInfo& acceleratorRuntimeInitialisationInfo() const override;
86 String versionStr() const override { return m_version_str; }
87 String majorAndMinorVersionStr() const override { return m_major_and_minor_version_str; }
88 String mainVersionStr() const override { return m_main_version_str; }
89 String targetinfoStr() const override { return m_targetinfo_str; }
90 String applicationName() const override { return m_application_name; }
91 String codeName() const override { return m_code_name; }
92 String userName() const override { return m_user_name; }
93 String userConfigPath() const override { return m_user_config_path; }
94 IMainFactory* mainFactory() const override { return m_main_factory; }
95
96 ByteConstSpan configBuffer() const override { return asBytes(m_config_bytes.constSpan()); }
97 ByteConstSpan userConfigBuffer() const override { return asBytes(m_user_config_bytes.constSpan()); }
98
99 SessionCollection sessions() override { return m_sessions; }
100 void addSession(ISession* s) override;
101 void removeSession(ISession* s) override;
102
103 ServiceFactory2Collection serviceFactories2() override;
104 ModuleFactoryInfoCollection moduleFactoryInfos() override;
105
106 Ref<ICodeService> getCodeService(const String& file_name) override;
107 bool hasGarbageCollector() const override { return m_has_garbage_collector; }
108
110 {
111 return m_physical_unit_system_service.get();
112 }
113
114 ITraceMngPolicy* getTraceMngPolicy() override { return m_trace_policy; }
115 ITraceMng* createAndInitializeTraceMng(ITraceMng* parent_trace,
116 const String& file_suffix) override;
117
118 private:
120 String m_namespace_uri;
121 String m_local_name;
122 NullThreadImplementation m_null_thread_implementation;
123 IArcaneMain* m_arcane_main = nullptr;
124 IMainFactory* m_main_factory = nullptr;
125 IServiceMng* m_service_mng = nullptr;
127 IParallelSuperMng* m_sequential_parallel_super_mng = nullptr;
129 IRessourceMng* m_ressource_mng = nullptr;
130 IIOMng* m_io_mng = nullptr;
131 IConfigurationMng* m_configuration_mng = nullptr;
137 String m_code_name;
144 bool m_has_garbage_collector;
145 ITraceMngPolicy* m_trace_policy = nullptr;
146
147 private:
148
156 //bool m_is_info_disabled;
157 bool m_is_master;
158 Ref<IPhysicalUnitSystemService> m_physical_unit_system_service;
163 Ref<IOnlineDebuggerService> m_online_debugger;
164 Ref<IProfilingService> m_profiling_service;
165
166 IServiceAndModuleFactoryMng* m_service_and_module_factory_mng;
167
168 Ref<IProcessorAffinityService> m_processor_affinity_service;
169 Ref<IStackTraceService> m_stack_trace_service;
170 Ref<ISymbolizerService> m_symbolizer_service;
171 Ref<IThreadImplementationService> m_thread_implementation_service;
172 Ref<IThreadImplementation> m_thread_implementation;
173 Ref<IPerformanceCounterService> m_performance_counter_service;
174 Ref<IParallelSuperMng> m_owned_sequential_parallel_super_mng;
175 Ref<ITaskImplementation> m_task_implementation;
176
177 private:
178
179 void _openUserConfig();
180 void _initDataInitialisationPolicy();
181 template<typename InterfaceType> Ref<InterfaceType>
182 _tryCreateService(const StringList& names,String* found_name);
183 UniqueArray<String> _stringListToArray(const StringList& slist) const;
184 void _readCodeConfigurationFile();
185};
186
187/*---------------------------------------------------------------------------*/
188/*---------------------------------------------------------------------------*/
189
190} // End namespace Arcane
191
192/*---------------------------------------------------------------------------*/
193/*---------------------------------------------------------------------------*/
194
195#endif
196
Informations pour construire une instance de IApplication.
Informations sur une application.
String m_user_config_path
Répertoire de configuration utilisateur.
ReferenceCounter< ITraceMng > m_trace
Gestionnaire de traces.
ModuleFactoryInfoCollection m_main_module_factory_infos
Tableau des fabriques de module.
String targetinfoStr() const override
Informations sur les options de compilation de l'application.
Definition Application.h:89
ScopedPtrT< IXmlDocumentHolder > m_config_document
Arbre DOM de la configuration.
IRessourceMng * ressourceMng() const override
Gestionnaire de ressources.
Definition Application.h:70
String userConfigPath() const override
Chemin du répertoire des configurations utilisateur.
Definition Application.h:93
IServiceMng * serviceMng() const override
Gestionnaire de services.
Definition Application.h:71
ApplicationInfo m_exe_info
Informations sur l'exécutable.
String m_major_and_minor_version_str
Version M.m.
ITraceMngPolicy * getTraceMngPolicy() override
Politique de configuration d'un gestionnaire de trace.
String m_version_str
Infos sur la configuration.
String m_used_task_service_name
Nom du service utilisé pour gérer les tâches.
IPhysicalUnitSystemService * getPhysicalUnitSystemService() override
Service gérant les systèmes d'unités physiques.
IMainFactory * mainFactory() const override
Manufacture principale.
Definition Application.h:94
SessionList m_sessions
Liste des sessions.
IBase * objectParent() const override
Parent de cet objet.
Definition Application.h:62
SessionCollection sessions() override
Liste des sessions.
Definition Application.h:99
String m_user_name
Nom de l'utilisateur.
String applicationName() const override
Nom de l'application.
Definition Application.h:90
const ApplicationInfo & applicationInfo() const override
Informations sur l'exécutable.
Definition Application.h:82
String m_used_thread_service_name
Nom du service utilisé pour gérer les threads.
String codeName() const override
Nom du code.
Definition Application.h:91
XmlNode m_user_config_root_element
Elément racine de la configuration utilisateur.
String m_main_version_str
Version sous la forme Majeur.mineur.beta.
String userName() const override
Nom de l'utilisateur.
Definition Application.h:92
UniqueArray< Byte > m_user_config_bytes
Fichier contenant la configuration utilisateur.
VersionInfo objectVersion() const override
Numéro de version du service.
Definition Application.h:65
bool m_is_init
true si déjà initialisé
IIOMng * ioMng() override
Gestionnaire des entrées/sorties.
Definition Application.h:78
ITraceMng * traceMng() const override
Gestionnaire de traces.
Definition Application.h:69
String mainVersionStr() const override
Numéro de version principal (sans la béta) de l'application.
Definition Application.h:88
String objectLocalName() const override
Nom local de l'objet.
Definition Application.h:64
XmlNode m_config_root_element
Elément racine de la configuration.
String majorAndMinorVersionStr() const override
Numéro de version majeur et mineure sous la forme M.m.
Definition Application.h:87
String m_application_name
Nom de l'application.
String m_targetinfo_str
Infos sur la configuration.
ScopedPtrT< IXmlDocumentHolder > m_user_config_document
Arbre DOM de la configuration utilisateur.
ServiceFactoryInfoCollection m_main_service_factory_infos
Tableau des fabriques de service.
bool hasGarbageCollector() const override
Indique que certains objets sont gérés via un ramasse miette.
IConfigurationMng * configurationMng() const override
Gestionnaire des configurations d'exécution.
Definition Application.h:79
Ref< IParallelSuperMng > m_parallel_super_mng
Gestionnaire du parallélisme.
UniqueArray< Byte > m_config_bytes
Fichier contenant la configuration.
Ref< IDataFactoryMng > m_data_factory_mng
Fabrique des données.
String versionStr() const override
Numéro de version de l'application.
Definition Application.h:86
IParallelSuperMng * sequentialParallelSuperMng() override
Gestionnaire un superviseur séquentiel du parallélisme.
Definition Application.h:74
IParallelSuperMng * parallelSuperMng() override
Gestionnaire superviseur du parallélisme.
Definition Application.h:73
String objectNamespaceURI() const override
Namespace de l'objet.
Definition Application.h:63
Informations pour l'initialisation du runtime '.Net'.
Interface de l'application.
Interface de la classe de gestion du code.
Definition IArcaneMain.h:54
Interface de la classe de base des objets principaux arcane.
Definition IBase.h:38
Gestionnaire de configuration.
Interface du gestionnaire de fabrique d'une donnée.
Interface d'une fabrique d'une donnée.
Interface du gestionnaire des entrées sorties.
Definition IIOMng.h:42
Manufacture des classes d'Arcane.
Classe abstraite du superviseur de parallélisme.
Interface d'un service gérant un système d'unité.
Interface d'un gestionnaire de ressource.
Interface d'un gestionnaire de fabriques de services et modules.
Interface du gestionnaire de services.
Definition IServiceMng.h:31
Interface d'une session d'exécution d'un cas.
Definition ISession.h:44
Interface du gestionnaire de configuration d'un gestionnnaire de trace.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Informations sur une version.
Definition VersionInfo.h:46
Noeud d'un arbre DOM.
Definition XmlNode.h:51
Interface du gestionnaire de traces.
Implémentation des threads en mode mono-thread.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Span< const std::byte > ByteConstSpan
Vue en lecture seule d'un tableau à une dimension de caractères.
Definition UtilsTypes.h:706