Line data Source code
1 : /********************************************************************************
2 : * Copyright (c) 2026 Accenture
3 : *
4 : * This program and the accompanying materials are made available under the
5 : * terms of the Apache License Version 2.0 which is available at
6 : * https://www.apache.org/licenses/LICENSE-2.0
7 : *
8 : * SPDX-License-Identifier: Apache-2.0
9 : ********************************************************************************/
10 :
11 : #include "someip/StatisticsEvaluator.h"
12 :
13 : #include "someip/IServiceRegistry.h"
14 : #include "someip/QueryManager.h"
15 :
16 : #include <util/timeout/ITimeoutManager2.h>
17 :
18 : namespace someip
19 : {
20 10 : StatisticsEvaluator::StatisticsEvaluator(
21 : ::async::ContextType const ethernetContext,
22 : IServiceRegistry& serviceRegistry,
23 10 : QueryManager& queryManager)
24 10 : : _ethernetContext(ethernetContext)
25 10 : , _cyclicFunction(
26 20 : ::async::Function::CallType::create<StatisticsEvaluator, &StatisticsEvaluator::cyclic>(*this))
27 : , _cyclicTimeout()
28 10 : , _serviceRegistry(serviceRegistry)
29 10 : , _queryManager(queryManager)
30 10 : , _secondsExpired(0U)
31 10 : {}
32 :
33 10 : void StatisticsEvaluator::init()
34 : {
35 10 : async::scheduleAtFixedRate(
36 10 : _ethernetContext, _cyclicFunction, _cyclicTimeout, 1000U, ::async::TimeUnit::MILLISECONDS);
37 10 : }
38 :
39 1 : void StatisticsEvaluator::shutdown() { _cyclicTimeout.cancel(); }
40 :
41 1 : void StatisticsEvaluator::reset()
42 : {
43 1 : _secondsExpired = 0U;
44 1 : Statistics::reset();
45 1 : }
46 :
47 9 : void StatisticsEvaluator::cyclic()
48 : {
49 9 : Statistics::numIncomingSubscriptions = _serviceRegistry.getCurrentNumberOfSubscriptions();
50 9 : Statistics::maxNumIncomingSubscriptions = _serviceRegistry.getMaximumNumberOfSubscriptions();
51 9 : Statistics::numProvidedServices = _serviceRegistry.getCurrentNumberOfProvidedServices();
52 9 : Statistics::maxNumProvidedServices = _serviceRegistry.getMaximumNumberOfProvidedServices();
53 9 : Statistics::numRemoteServices = _serviceRegistry.getCurrentNumberOfRemoteServices();
54 9 : Statistics::maxNumRemoteServices = _serviceRegistry.getMaximumNumberOfRemoteServices();
55 9 : Statistics::maxNumQueries = _queryManager.getMaxNumQueries();
56 9 : Statistics::numQueries = _queryManager.getNumQueries();
57 9 : ++_secondsExpired;
58 9 : }
59 :
60 : } // namespace someip
|