first commit

This commit is contained in:
Your Name
2022-10-20 20:29:11 +08:00
commit 4d531f8044
3238 changed files with 1387862 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
/*
* SPDX-FileCopyrightText: (C) 2019-2022 swift Project Community / Contributors (https://swift-project.org/)
* SPDX-FileCopyrightText: (C) 2019-2022 Lars Toenning <dev@ltoenning.de>
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "plugin.h"
#include "service.h"
#include "traffic.h"
#include <Main/fg_props.hxx>
#include <Main/globals.hxx>
#include <functional>
#include <iostream>
#include <simgear/structure/commands.hxx>
#include <thread>
namespace {
inline std::string fgswiftbusServiceName()
{
return "org.swift-project.fgswiftbus";
}
} // namespace
namespace FGSwiftBus {
CPlugin::CPlugin()
{
startServer();
}
CPlugin::~CPlugin()
{
if (m_dbusConnection) {
m_dbusConnection->close();
}
m_shouldStop = true;
if (m_dbusThread.joinable()) { m_dbusThread.join(); }
}
void CPlugin::startServer()
{
m_service.reset(new CService());
m_traffic.reset(new CTraffic());
m_dbusP2PServer.reset(new CDBusServer());
std::string ip = fgGetString("/sim/swift/address", "127.0.0.1");
std::string port = fgGetString("/sim/swift/port", "45003");
std::string listenAddress = "tcp:host=" + ip + ",port=" + port;
if (!m_dbusP2PServer->listen(listenAddress)) {
m_service->addTextMessage("FGSwiftBus startup failed!");
return;
}
m_dbusP2PServer->setDispatcher(&m_dbusDispatcher);
m_dbusP2PServer->setNewConnectionFunc([this](const std::shared_ptr<CDBusConnection>& conn) {
m_dbusConnection = conn;
m_dbusConnection->setDispatcher(&m_dbusDispatcher);
m_service->setDBusConnection(m_dbusConnection);
m_service->registerDBusObjectPath(m_service->InterfaceName(), m_service->ObjectPath());
m_traffic->setDBusConnection(m_dbusConnection);
m_traffic->registerDBusObjectPath(m_traffic->InterfaceName(), m_traffic->ObjectPath());
});
SG_LOG(SG_NETWORK, SG_INFO, "FGSwiftBus started");
}
void CPlugin::fastLoop()
{
this->m_dbusDispatcher.runOnce();
this->m_service->process();
this->m_traffic->process();
this->m_traffic->emitSimFrame();
}
} // namespace FGSwiftBus