Arcane  v3.14.10.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
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{
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{
142 IParallelSuperMng* sm = application()->parallelSuperMng();
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{
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; }
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 IMainFactory * mainFactory() const =0
Manufacture principale.
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.
Classe abstraite du superviseur de parallélisme.
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
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
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
Paramètres nécessaires à la construction d'un sous-domaine.
Informations sur une version.
Definition VersionInfo.h:46
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
ITraceMng * traceMng() const
Gestionnaire de trace.