Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
ServiceMng.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* ServiceMng.cc (C) 2000-2013 */
9/* */
10/* Class managing all services. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/ArcanePrecomp.h"
15
16#include "arcane/utils/List.h"
17#include "arcane/utils/PlatformUtils.h"
18#include "arcane/utils/String.h"
19#include "arcane/utils/Ref.h"
20#include "arccore/base/ReferenceCounter.h"
21
22#include "arcane/core/IBase.h"
23#include "arcane/core/IServiceMng.h"
24#include "arcane/core/IService.h"
25#include "arcane/core/IServiceInfo.h"
26#include "arcane/core/ServiceInstance.h"
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31namespace Arcane
32{
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
40class ServiceMng
41: public IServiceMng
42{
43 public:
44
45 ServiceMng(IBase*);
46 ~ServiceMng();
47
48 public:
49
50 ITraceMng* traceMng() const override { return m_base->traceMng(); }
51
56
61
63
64 private:
65
68
69 private:
70
71 void onServicesChanged(const CollectionEventArgs& args);
72};
73
74/*---------------------------------------------------------------------------*/
75/*---------------------------------------------------------------------------*/
76
77extern "C++" IServiceMng*
78arcaneCreateServiceMng(IBase* b)
79{
80 return new ServiceMng(b);
81}
82
83/*---------------------------------------------------------------------------*/
84/*---------------------------------------------------------------------------*/
85
86ServiceMng::
87ServiceMng(IBase* b)
88: m_base(b)
89{
90}
91
92/*---------------------------------------------------------------------------*/
93/*---------------------------------------------------------------------------*/
94
95ServiceMng::
96~ServiceMng()
97{
98}
99
100/*---------------------------------------------------------------------------*/
101/*---------------------------------------------------------------------------*/
102
104singletonServiceReference(const String& name) const
105{
107 IServiceInstance* si = sr.get();
108 if (si) {
109 IServiceInfo* sii = si->serviceInfo();
110 if (sii && sii->localName() == name)
111 return sr;
112 }
113 }
114 return {};
115}
116
117/*---------------------------------------------------------------------------*/
118/*---------------------------------------------------------------------------*/
119
120void ServiceMng::
121onServicesChanged(const CollectionEventArgs& args)
122{
123 ARCANE_UNUSED(args);
124}
125
126/*---------------------------------------------------------------------------*/
127/*---------------------------------------------------------------------------*/
128
129} // namespace Arcane
130
131/*---------------------------------------------------------------------------*/
132/*---------------------------------------------------------------------------*/
Arguments of an event sent by a collection.
Interface of the base class for main arcane objects.
Definition IBase.h:32
Interface for service or module information.
virtual String localName() const =0
Local part of the service name.
Interface of a service instance.
Definition IService.h:69
Service manager interface.
Definition IServiceMng.h:32
Implementation of a collection of elements in vector form.
Service manager.
Definition ServiceMng.cc:42
ITraceMng * traceMng() const override
Associated trace manager.
Definition ServiceMng.cc:50
IBase * m_base
Main manager.
Definition ServiceMng.cc:66
SingletonServiceInstanceRef singletonServiceReference(const String &name) const override
List< SingletonServiceInstanceRef > m_singleton_instances
List of singleton instances.
Definition ServiceMng.cc:67
SingletonServiceInstanceCollection singletonServices() const override
Returns the list of singleton services.
Definition ServiceMng.cc:57
void addSingletonInstance(SingletonServiceInstanceRef sv) override
Adds a reference to the service sv.
Definition ServiceMng.cc:52
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Collection< SingletonServiceInstanceRef > SingletonServiceInstanceCollection
Collection of singleton service instances.
Ref< ISingletonServiceInstance > SingletonServiceInstanceRef
Reference to the 'ISingletonServiceInstance' interface.
Definition ArcaneTypes.h:91