Skip to content

Commit

Permalink
Merge pull request #116 from KonstantinRitt/optimize_message
Browse files Browse the repository at this point in the history
Optimize Message for better performance in common case
  • Loading branch information
mwallnoefer committed Aug 22, 2017
2 parents 3861c5e + 420db41 commit 6da425b
Show file tree
Hide file tree
Showing 9 changed files with 301 additions and 245 deletions.
1 change: 0 additions & 1 deletion src/mqtt/mqtt.pri
Expand Up @@ -27,7 +27,6 @@ SOURCES += \
$$PWD/qmqtt_network.cpp \
$$PWD/qmqtt_routesubscription.cpp \
$$PWD/qmqtt_router.cpp \
$$PWD/qmqtt_message_p.cpp \
$$PWD/qmqtt_socket.cpp \
$$PWD/qmqtt_ssl_socket.cpp \
$$PWD/qmqtt_timer.cpp
99 changes: 46 additions & 53 deletions src/mqtt/qmqtt_message.cpp
Expand Up @@ -32,111 +32,104 @@
#include "qmqtt_message.h"
#include "qmqtt_message_p.h"

QMQTT::Message::Message()
: d_ptr(new MessagePrivate)
namespace QMQTT {

Message::Message()
: d(new MessagePrivate)
{
Q_D(Message);
d->init(0, QString(), QByteArray(), 0, false, false);
}

QMQTT::Message::Message(const quint16 id, const QString &topic, const QByteArray &payload,
Message::Message(const quint16 id, const QString &topic, const QByteArray &payload,
const quint8 qos, const bool retain, const bool dup)
: d_ptr(new MessagePrivate)
: d(new MessagePrivate(id, topic, payload, qos, retain, dup))
{
Q_D(Message);
d->init(id, topic, payload, qos, retain, dup);
}

QMQTT::Message::~Message()
Message::Message(const Message &other)
: d(other.d)
{
}

QMQTT::Message::Message(const Message& other)
: d_ptr(new MessagePrivate(*(other.d_ptr)))
Message::~Message()
{
}

QMQTT::Message& QMQTT::Message::operator=(const Message& other)
Message &Message::operator=(const Message &other)
{
Q_D(Message);
*d = *(other.d_ptr);
d = other.d;
return *this;
}

bool QMQTT::Message::operator==(const Message& other) const
bool Message::operator==(const Message &other) const
{
Q_D(const Message);
return *d == *(other.d_ptr);
if (d == other.d)
return true;
return d->id == other.d->id
&& d->qos == other.d->qos
&& d->retain == other.d->retain
&& d->dup == other.d->dup
&& d->topic == other.d->topic
&& d->payload == other.d->payload;
}

quint16 QMQTT::Message::id() const
quint16 Message::id() const
{
Q_D(const Message);
return d->id();
return d->id;
}

void QMQTT::Message::setId(const quint16 id)
void Message::setId(const quint16 id)
{
Q_D(Message);
d->setId(id);
d->id = id;
}

quint8 QMQTT::Message::qos() const
quint8 Message::qos() const
{
Q_D(const Message);
return d->qos();
return d->qos;
}

void QMQTT::Message::setQos(const quint8 qos)
void Message::setQos(const quint8 qos)
{
Q_D(Message);
d->setQos(qos);
d->qos = qos;
}

bool QMQTT::Message::retain() const
bool Message::retain() const
{
Q_D(const Message);
return d->retain();
return d->retain;
}

void QMQTT::Message::setRetain(const bool retain)
void Message::setRetain(const bool retain)
{
Q_D(Message);
d->setRetain(retain);
d->retain = retain;
}

bool QMQTT::Message::dup() const
bool Message::dup() const
{
Q_D(const Message);
return d->dup();
return d->dup;
}

void QMQTT::Message::setDup(const bool dup)
void Message::setDup(const bool dup)
{
Q_D(Message);
d->setDup(dup);
d->dup = dup;
}

QString QMQTT::Message::topic() const
QString Message::topic() const
{
Q_D(const Message);
return d->topic();
return d->topic;
}

void QMQTT::Message::setTopic(const QString& topic)
void Message::setTopic(const QString &topic)
{
Q_D(Message);
d->setTopic(topic);
d->topic = topic;
}

QByteArray QMQTT::Message::payload() const
QByteArray Message::payload() const
{
Q_D(const Message);
return d->payload();
return d->payload;
}

void QMQTT::Message::setPayload(const QByteArray& payload)
void Message::setPayload(const QByteArray &payload)
{
Q_D(Message);
d->setPayload(payload);
d->payload = payload;
}

} // namespace QMQTT
32 changes: 19 additions & 13 deletions src/mqtt/qmqtt_message.h
Expand Up @@ -34,8 +34,8 @@

#include <qmqtt_global.h>

#include <QScopedPointer>
#include <QMetaType>
#include <QtCore/qmetatype.h>
#include <QtCore/qshareddata.h>

namespace QMQTT {

Expand All @@ -44,18 +44,25 @@ class MessagePrivate;
class Q_MQTT_EXPORT Message
{
public:
explicit Message();
Message();
explicit Message(const quint16 id, const QString &topic, const QByteArray &payload,
const quint8 qos = 0, const bool retain = false, const bool dup = false);
virtual ~Message();
Message(const Message &other);
~Message();

Message(const Message& other);
Message& operator=(const Message& other);
Message &operator=(const Message &other);
#ifdef Q_COMPILER_RVALUE_REFS
inline Message &operator=(Message &&other) Q_DECL_NOTHROW
{ swap(other); return *this; }
#endif

bool operator==(const Message& other) const;
bool operator==(const Message &other) const;
inline bool operator!=(const Message &other) const
{ return !operator==(other); }

inline void swap(Message &other) Q_DECL_NOTHROW
{ qSwap(d, other.d); }

quint16 id() const;
void setId(const quint16 id);

Expand All @@ -72,17 +79,16 @@ class Q_MQTT_EXPORT Message
void setTopic(const QString &topic);

QByteArray payload() const;
void setPayload(const QByteArray & payload);

protected:
QScopedPointer<MessagePrivate> d_ptr;
void setPayload(const QByteArray &payload);

private:
Q_DECLARE_PRIVATE(Message)
QSharedDataPointer<MessagePrivate> d;
};

} // namespace QMQTT

Q_DECLARE_METATYPE(QMQTT::Message);
Q_DECLARE_SHARED(QMQTT::Message)

Q_DECLARE_METATYPE(QMQTT::Message)

#endif // QMQTT_MESSAGE_H
149 changes: 0 additions & 149 deletions src/mqtt/qmqtt_message_p.cpp

This file was deleted.

0 comments on commit 6da425b

Please sign in to comment.