mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 20:15:35 +08:00
[xswiftbus] Use std::string_view for performance in CDBusMessage
This avoids repeated dynamic memory allocations in dbusMessageHandler methods and elsewhere due to repeatedly constructing temporary strings. std::string_view is a C++17 feature but also part of the Library Fundamentals TS and available in all our compilers.
This commit is contained in:
@@ -61,17 +61,17 @@ namespace XSwiftBus
|
||||
return dbus_message_get_serial(m_message);
|
||||
}
|
||||
|
||||
std::string CDBusMessage::getInterfaceName() const
|
||||
string_view CDBusMessage::getInterfaceName() const
|
||||
{
|
||||
return dbus_message_get_interface(m_message);
|
||||
}
|
||||
|
||||
std::string CDBusMessage::getObjectPath() const
|
||||
string_view CDBusMessage::getObjectPath() const
|
||||
{
|
||||
return dbus_message_get_path(m_message);
|
||||
}
|
||||
|
||||
std::string CDBusMessage::getMethodName() const
|
||||
string_view CDBusMessage::getMethodName() const
|
||||
{
|
||||
return dbus_message_get_member(m_message);
|
||||
}
|
||||
|
||||
@@ -12,10 +12,23 @@
|
||||
#include "dbus/dbus.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#if defined(_MSC_VER)
|
||||
#include <experimental/string>
|
||||
#elif defined(__clang__)
|
||||
#include <string_view>
|
||||
#else
|
||||
#include <experimental/string_view>
|
||||
#endif
|
||||
|
||||
namespace XSwiftBus
|
||||
{
|
||||
|
||||
#if defined(_MSC_VER) || defined(__clang__)
|
||||
using std::string_view;
|
||||
#else
|
||||
using std::experimental::string_view;
|
||||
#endif
|
||||
|
||||
//! DBus Message
|
||||
class CDBusMessage
|
||||
{
|
||||
@@ -45,13 +58,13 @@ namespace XSwiftBus
|
||||
dbus_uint32_t getSerial() const;
|
||||
|
||||
//! Get the called interface name
|
||||
std::string getInterfaceName() const;
|
||||
string_view getInterfaceName() const;
|
||||
|
||||
//! Get the called object path
|
||||
std::string getObjectPath() const;
|
||||
string_view getObjectPath() const;
|
||||
|
||||
//! Get the called method name
|
||||
std::string getMethodName() const;
|
||||
string_view getMethodName() const;
|
||||
|
||||
//! Begin writing argument
|
||||
void beginArgumentWrite();
|
||||
|
||||
@@ -5,6 +5,8 @@ TEMPLATE = lib
|
||||
CONFIG += shared plugin
|
||||
CONFIG -= qt
|
||||
|
||||
CONFIG += c++17
|
||||
|
||||
INCLUDEPATH += $$EXTERNALSROOT/common/include/XPLM
|
||||
|
||||
LIBS += -levent_core -ldbus-1
|
||||
|
||||
Reference in New Issue
Block a user