Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Session.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/* Session.cc (C) 2000-2014 */
9/* */
10/* Session. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/ArcanePrecomp.h"
15
16#include "arcane/utils/ScopedPtr.h"
17#include "arcane/utils/List.h"
18#include "arcane/utils/ApplicationInfo.h"
19#include "arcane/utils/String.h"
20#include "arcane/utils/Array.h"
21#include "arcane/utils/ITraceMng.h"
22#include "arcane/utils/ArcanePrecomp.h"
23#include "arcane/utils/CriticalSection.h"
24
25#include "arcane/IApplication.h"
26#include "arcane/IIOMng.h"
27#include "arcane/IParallelMng.h"
28#include "arcane/ICaseDocument.h"
29#include "arcane/XmlNode.h"
30#include "arcane/CaseNodeNames.h"
31#include "arcane/ISubDomain.h"
32#include "arcane/IMainFactory.h"
33#include "arcane/IParallelSuperMng.h"
34#include "arcane/IServiceMng.h"
35#include "arcane/SubDomainBuildInfo.h"
36
37#include "arcane/impl/Session.h"
38
39/*---------------------------------------------------------------------------*/
40/*---------------------------------------------------------------------------*/
41
42ARCANE_BEGIN_NAMESPACE
43
44/*---------------------------------------------------------------------------*/
45/*---------------------------------------------------------------------------*/
46
47extern "C++" ISubDomain*
48arcaneCreateSubDomain(ISession* session,const SubDomainBuildInfo& sdbi);
49
50/*---------------------------------------------------------------------------*/
51/*---------------------------------------------------------------------------*/
52
53extern "C++" ISession*
54arcaneCreateSession(IApplication* sm)
55{
56 Session* s = new Session(sm);
57 s->build();
58 return s;
59}
60
61/*---------------------------------------------------------------------------*/
62/*---------------------------------------------------------------------------*/
67{
68 public:
69
70 Impl(IApplication* app)
71 : m_application(app), m_namespace_uri(arcaneNamespaceURI())
72 {}
73 ~Impl() {}
74
75 public:
76
79 SubDomainList m_sub_domains;
81 String m_namespace_uri;
82 String m_local_name;
83};
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
87
88Session::
89Session(IApplication* app)
90: TraceAccessor(app->traceMng())
91, m_p(0)
92{
93 m_p = new Impl(app);
94 m_p->m_local_name = "Session";
95}
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
99
100Session::
101~Session()
102{
103 for( SubDomainList::Enumerator i(m_p->m_sub_domains); ++i; ){
104 (*i)->destroy();
105 }
106 delete m_p;
107}
108
109/*---------------------------------------------------------------------------*/
110/*---------------------------------------------------------------------------*/
111
113build()
114{
115 IMainFactory* mf = m_p->m_application->mainFactory();
116 m_p->m_service_mng = mf->createServiceMng(this);
117}
118
119/*---------------------------------------------------------------------------*/
120/*---------------------------------------------------------------------------*/
130checkIsValidCaseVersion(const String& version)
131{
132 ARCANE_UNUSED(version);
133 return false;
134}
135
136/*---------------------------------------------------------------------------*/
137/*---------------------------------------------------------------------------*/
138
141{
143 ISubDomain* s = 0;
144 {
145 CriticalSection cs(sm->threadMng());
146 s = arcaneCreateSubDomain(this,sdbi);
147 //TODO: Utiliser le rang local pour ranger dans l'ordre
148 m_p->m_sub_domains.add(s);
149 }
150 s->initialize();
151 // Initialisation spécifique à la classe dérivée si besoin
152 _initSubDomain(s);
153 return s;
154}
155
156/*---------------------------------------------------------------------------*/
157/*---------------------------------------------------------------------------*/
158
160doAbort()
161{
162 IParallelSuperMng* psm = m_p->m_application->parallelSuperMng();
163 if (psm)
164 psm->tryAbort();
165}
166
167/*---------------------------------------------------------------------------*/
168/*---------------------------------------------------------------------------*/
169
171objectParent() const
172{
173 return m_p->m_application;
174}
175
176String Session::objectNamespaceURI() const { return m_p->m_namespace_uri; }
177String Session::objectLocalName() const { return m_p->m_local_name; }
179IServiceMng* Session::serviceMng() const { return m_p->m_service_mng.get(); }
181IApplication* Session::application() const { return m_p->m_application; }
183const String& Session::fileName() const { return m_p->m_filename; }
184SubDomainCollection Session::subDomains() { return m_p->m_sub_domains; }
185IApplication* Session::_application() const { return m_p->m_application; }
186
187/*---------------------------------------------------------------------------*/
188/*---------------------------------------------------------------------------*/
189
190ARCANE_END_NAMESPACE
191
192/*---------------------------------------------------------------------------*/
193/*---------------------------------------------------------------------------*/
Section critique en multi-thread.
Interface de l'application.
virtual IParallelSuperMng * parallelSuperMng()=0
Gestionnaire superviseur du parallélisme.
Interface de la classe de base des objets principaux arcane.
Definition IBase.h:38
virtual void initialize()=0
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
Manufacture des classes d'Arcane.
virtual IServiceMng * createServiceMng(IBase *)=0
Crée une instance du gestionnaire de services.
Classe abstraite du superviseur de parallélisme.
virtual void tryAbort()=0
Tente de faire un abort.
virtual IThreadMng * threadMng() const =0
Gestionnaire de thread.
Interface d'un gestionnaire de ressource.
Interface du gestionnaire de services.
Definition IServiceMng.h:31
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Interface du gestionnaire de traces.
ListEnumeratorT< ISubDomain * > Enumerator
Definition List.h:243
Encapsulation d'un pointeur qui se détruit automatiquement.
Definition ScopedPtr.h:44
IApplication * m_application
Superviseur.
Definition Session.cc:77
String m_filename
Fichier de configuration.
Definition Session.cc:78
ScopedPtrT< IServiceMng > m_service_mng
Gestionnaire des services.
Definition Session.cc:80
virtual VersionInfo objectVersion() const
Numéro de version du service.
Definition Session.cc:178
virtual String objectLocalName() const
Nom local de l'objet.
Definition Session.cc:177
virtual void build()
Construit les membres de l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas é...
Definition Session.cc:113
virtual SubDomainCollection subDomains()
Liste des sous-domaines de la session.
Definition Session.cc:184
virtual IApplication * application() const
Application.
Definition Session.cc:181
virtual ISubDomain * createSubDomain(const SubDomainBuildInfo &sdbi)
Créé un sous-domaine avec les paramètres contenus dans sdbi.
Definition Session.cc:140
virtual IRessourceMng * ressourceMng() const
Gestionnaire de ressources.
Definition Session.cc:180
Impl * m_p
Implémentation.
Definition Session.h:88
virtual IServiceMng * serviceMng() const
Gestionnaire de services.
Definition Session.cc:179
virtual String objectNamespaceURI() const
Namespace de l'objet.
Definition Session.cc:176
virtual ITraceMng * traceMng() const
Gestionnaire de traces.
Definition Session.cc:182
virtual void doAbort()
Effectue un abort.
Definition Session.cc:160
virtual bool checkIsValidCaseVersion(const String &version)
Definition Session.cc:130
virtual IBase * objectParent() const
Parent de cet objet.
Definition Session.cc:171
Chaîne de caractères unicode.
Paramètres nécessaires à la construction d'un sous-domaine.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
ITraceMng * traceMng() const
Gestionnaire de trace.
Informations sur une version.
Definition VersionInfo.h:46
List< ISubDomain * > SubDomainList
Tableau de sous-domaines.
Collection< ISubDomain * > SubDomainCollection
Collection de sous-domaines.