mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 12:55:33 +08:00
Fix assert in DBus if dbus_server_listen returned NULL
ref T589
This commit is contained in:
committed by
Mat Sutcliffe
parent
77acffb73e
commit
821e0b10b6
@@ -34,23 +34,30 @@ namespace XSwiftBus
|
||||
DBusError error;
|
||||
dbus_error_init(&error);
|
||||
m_server.reset(dbus_server_listen(address.c_str(), &error));
|
||||
|
||||
if (! m_server)
|
||||
{
|
||||
ERROR_LOG("DBus failed to listen for new connections on given address: " + std::string(error.message));
|
||||
return false;
|
||||
}
|
||||
dbus_server_set_new_connection_function(m_server.get(), onNewConnection, this, nullptr);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CDBusServer::isConnected() const
|
||||
{
|
||||
return dbus_server_get_is_connected(m_server.get());
|
||||
return m_server ? dbus_server_get_is_connected(m_server.get()) : false;
|
||||
}
|
||||
|
||||
void CDBusServer::close()
|
||||
{
|
||||
dbus_server_disconnect(m_server.get());
|
||||
if (m_server) { dbus_server_disconnect(m_server.get()); }
|
||||
}
|
||||
|
||||
void CDBusServer::setDispatcher(CDBusDispatcher *dispatcher)
|
||||
{
|
||||
assert(dispatcher);
|
||||
assert(m_server);
|
||||
|
||||
m_dispatcher = dispatcher;
|
||||
|
||||
|
||||
@@ -103,7 +103,11 @@ namespace XSwiftBus
|
||||
|
||||
// FIXME: make listen address configurable
|
||||
std::string listenAddress = "tcp:host=" + m_pluginConfig.getDBusAddress() + ",port=" + std::to_string(m_pluginConfig.getDBusPort());
|
||||
m_dbusP2PServer->listen(listenAddress);
|
||||
if (! m_dbusP2PServer->listen(listenAddress))
|
||||
{
|
||||
m_service->addTextMessage("XSwiftBus startup failed!", 255, 0, 0);
|
||||
return;
|
||||
}
|
||||
m_dbusP2PServer->setDispatcher(&m_dbusDispatcher);
|
||||
|
||||
m_dbusP2PServer->setNewConnectionFunc([this](const std::shared_ptr<CDBusConnection> &conn)
|
||||
@@ -140,7 +144,9 @@ namespace XSwiftBus
|
||||
m_weather->registerDBusObjectPath(m_weather->InterfaceName(), m_weather->ObjectPath());
|
||||
}
|
||||
|
||||
//! todo RR: Send all logs to the the message window.
|
||||
INFO_LOG("XSwiftBus started.");
|
||||
m_service->addTextMessage("XSwiftBus started.", 0, 255, 255);
|
||||
}
|
||||
|
||||
void CPlugin::onAircraftModelChanged()
|
||||
|
||||
@@ -22,7 +22,6 @@ namespace XSwiftBus
|
||||
|
||||
CService::CService() : CDBusObject()
|
||||
{
|
||||
addTextMessage("xswiftbus started.", 0, 255, 255);
|
||||
updateAirportsInRange();
|
||||
}
|
||||
|
||||
|
||||
@@ -67,8 +67,8 @@ namespace XSwiftBus
|
||||
case WarningMsg:
|
||||
ss << "Warning";
|
||||
break;
|
||||
case FatalMsg:
|
||||
ss << "Fatal";
|
||||
case ErrorMsg:
|
||||
ss << "Error";
|
||||
break;
|
||||
}
|
||||
ss << ' ';
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace XSwiftBus
|
||||
{
|
||||
public:
|
||||
//! Message type
|
||||
enum MsgType { DebugMsg, WarningMsg, FatalMsg, InfoMsg };
|
||||
enum MsgType { DebugMsg, WarningMsg, ErrorMsg, InfoMsg };
|
||||
|
||||
Logger() = delete;
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace XSwiftBus
|
||||
#define DEBUG_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::DebugMsg, msg)
|
||||
#define INFO_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::InfoMsg, msg)
|
||||
#define WARNING_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::WarningMsg, msg)
|
||||
#define ERROR_LOG(msg) Logger::print(__FILE__, __LINE__, Logger::ErrorMsg, msg)
|
||||
//! @}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user