refs #246 refactored construction of the network context into a factory method

This commit is contained in:
Mathew Sutcliffe
2014-06-11 22:36:53 +01:00
parent 695eb5c41c
commit cdca7343e4
5 changed files with 33 additions and 13 deletions

View File

@@ -0,0 +1,27 @@
/* Copyright (C) 2013 VATSIM Community / contributors
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "context_network.h"
#include "context_network_impl.h"
#include "context_network_proxy.h"
namespace BlackCore
{
IContextNetwork *IContextNetwork::create(CRuntime *parent, CRuntimeConfig::ContextMode mode, CDBusServer *server, QDBusConnection &conn)
{
switch (mode)
{
case CRuntimeConfig::Local:
case CRuntimeConfig::LocalInDbusServer:
return (new CContextNetwork(mode, parent))->registerWithDBus(server);
case CRuntimeConfig::Remote:
return new BlackCore::CContextNetworkProxy(BlackCore::CDBusServer::ServiceName, conn, mode, parent);
default:
return nullptr; // network not mandatory
}
}
}

View File

@@ -46,6 +46,9 @@ namespace BlackCore
//! \copydoc CContext::getPathAndContextId()
virtual QString getPathAndContextId() const { return this->buildPathAndContextId(ObjectPath()); }
//! Factory method
static IContextNetwork *create(CRuntime *parent, CRuntimeConfig::ContextMode mode, CDBusServer *server, QDBusConnection &conn);
//! Destructor
virtual ~IContextNetwork() {}

View File

@@ -29,6 +29,7 @@ namespace BlackCore
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", BLACKCORE_CONTEXTNETWORK_INTERFACENAME)
friend class IContextNetwork;
friend class CRuntime;
public:

View File

@@ -24,7 +24,7 @@ namespace BlackCore
class CContextNetworkProxy : public IContextNetwork
{
Q_OBJECT
friend class CRuntime;
friend class IContextNetwork;
public:

View File

@@ -394,18 +394,7 @@ namespace BlackCore
}
times.insert("Audio", time.restart());
switch (config.getModeNetwork())
{
case CRuntimeConfig::Local:
case CRuntimeConfig::LocalInDbusServer:
this->m_contextNetwork = (new CContextNetwork(config.getModeNetwork(), this))->registerWithDBus(this->m_dbusServer);
break;
case CRuntimeConfig::Remote:
this->m_contextNetwork = new BlackCore::CContextNetworkProxy(BlackCore::CDBusServer::ServiceName, this->m_dbusConnection, config.getModeNetwork(), this);
break;
default:
break; // network not mandatory
}
this->m_contextNetwork = IContextNetwork::create(this, config.getModeNetwork(), this->m_dbusServer, this->m_dbusConnection);
times.insert("Network", time.restart());
switch (config.getModeSimulator())