swift
contextsimulator.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QFlag>
7 
11 #include "misc/dbusserver.h"
12 #include "misc/pq/units.h"
13 
14 using namespace swift::config;
15 using namespace swift::misc;
16 using namespace swift::misc::simulation;
17 using namespace swift::misc::physical_quantities;
18 
19 namespace swift::core::context
20 {
21  const QString &IContextSimulator::InterfaceName()
22  {
23  static const QString s(SWIFT_CORE_CONTEXTSIMULATOR_INTERFACENAME);
24  return s;
25  }
26 
27  const QString &IContextSimulator::ObjectPath()
28  {
29  static const QString s(SWIFT_CORE_CONTEXTSIMULATOR_OBJECTPATH);
30  return s;
31  }
32 
33  IContextSimulator *IContextSimulator::create(CCoreFacade *parent, CCoreFacadeConfig::ContextMode mode,
34  CDBusServer *server, QDBusConnection &connection)
35  {
36  switch (mode)
37  {
38  case CCoreFacadeConfig::Local: return new CContextSimulator(mode, parent);
39  case CCoreFacadeConfig::LocalInDBusServer:
40  {
41  auto *context = new CContextSimulator(mode, parent);
42  context->registerWithDBus(ObjectPath(), server);
43  return context;
44  }
45  case CCoreFacadeConfig::Remote:
46  return new CContextSimulatorProxy(CDBusServer::coreServiceName(connection), connection, mode, parent);
47  case CCoreFacadeConfig::NotUsed:
48  default: return new CContextSimulatorEmpty(parent);
49  }
50  }
51 
52  bool IContextSimulator::isSimulatorAvailable() const { return !this->getSimulatorPluginInfo().isUnspecified(); }
53 
54  bool IContextSimulator::isSimulatorSimulating() const
55  {
56  if (!isSimulatorAvailable() || !getSimulatorStatus().testFlag(ISimulator::Simulating)) { return false; }
57  return true;
58  }
59 } // namespace swift::core::context
ContextMode
How to handle a given context.
The class providing facades (the contexts) for all DBus relevant operations.
Definition: corefacade.h:57
Empty context, used during shutdown/initialization.
Network simulator concrete implementation.
Custom DBusServer.
Definition: dbusserver.h:34
#define SWIFT_CORE_CONTEXTSIMULATOR_OBJECTPATH
DBus object path for context.
#define SWIFT_CORE_CONTEXTSIMULATOR_INTERFACENAME
DBus interface for context.
Free functions in swift::misc.