Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
AbstractService.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/* AbstractService.h (C) 2000-2017 */
9/* */
10/* Classe de base d'un service. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ABSTRACTSERVICE_H
13#define ARCANE_ABSTRACTSERVICE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/IService.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23ARCANE_BEGIN_NAMESPACE
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class ServiceBuildInfo;
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32/*!
33 * \brief Classe de base d'un service.
34 *
35 * Cette classe est LA classe d'implémentation bas niveau de l'interface \a IService.
36 *
37 * \ingroup Service
38 */
39class ARCANE_CORE_EXPORT AbstractService
40: public TraceAccessor
41, public IService
42{
43 protected:
44
45 //! Constructeur à partir d'un \a ServiceBuildInfo
47
48 public:
49
50 //! Destructeur
51 virtual ~AbstractService();
52
53 public:
54
55 //! Construction de niveau \a build du service
56 /*! L'appel à \a build est effectué au moment de sa construction,
57 * usuellement au niveau de sa lecture dans les options en phase1.
58 */
59 virtual void build() {}
60
61 public:
62
63 //! Accès aux informations du service
64 /*! Voir \a IServiceInfo pour les détails */
65 virtual IServiceInfo* serviceInfo() const { return m_service_info; }
66
67 //! Accès à l'interface de base des principaux objets Arcane
68 virtual IBase* serviceParent() const { return m_parent; }
69
70 //! Retourne l'interface bas niveau \a IService du service
71 virtual IService* serviceInterface() { return this; }
72
73 private:
74
75 IServiceInfo* m_service_info;
76 IBase* m_parent;
77};
78
79/*---------------------------------------------------------------------------*/
80/*---------------------------------------------------------------------------*/
81
82ARCANE_END_NAMESPACE
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
86
87#endif
88
Classe de base d'un service.
virtual IService * serviceInterface()
Retourne l'interface bas niveau IService du service.
virtual IServiceInfo * serviceInfo() const
Accès aux informations du service.
virtual IBase * serviceParent() const
Accès à l'interface de base des principaux objets Arcane.
virtual void build()
Construction de niveau build du service.
Interface de la classe de base des objets principaux arcane.
Definition IBase.h:38
Interface des informations d'un service ou d'un module.
Interface d'un service.
Definition IService.h:45
Structure contenant les informations pour créer un service.