qamqp/src/qamqpmessage.cpp

128 lines
2.5 KiB
C++
Raw Normal View History

#include <QHash>
#include "qamqpmessage.h"
#include "qamqpmessage_p.h"
using namespace QAMQP;
MessagePrivate::MessagePrivate()
: deliveryTag(0),
leftSize(0)
{
}
//////////////////////////////////////////////////////////////////////////
Message::Message()
: d(new MessagePrivate)
{
}
Message::Message(const Message &other)
: d(other.d)
{
}
Message::~Message()
{
}
Message &Message::operator=(const Message &other)
{
d = other.d;
return *this;
}
bool Message::operator==(const Message &message) const
{
if (message.d == d)
return true;
return (message.d->deliveryTag == d->deliveryTag &&
message.d->redelivered == d->redelivered &&
message.d->exchangeName == d->exchangeName &&
message.d->routingKey == d->routingKey &&
message.d->payload == d->payload &&
message.d->properties == d->properties &&
message.d->headers == d->headers &&
message.d->leftSize == d->leftSize);
}
bool Message::isValid() const
{
return d->deliveryTag != 0 &&
!d->exchangeName.isNull() &&
!d->routingKey.isNull();
}
qlonglong Message::deliveryTag() const
{
return d->deliveryTag;
}
bool Message::isRedelivered() const
{
return d->redelivered;
}
QString Message::exchangeName() const
{
return d->exchangeName;
}
QString Message::routingKey() const
{
return d->routingKey;
}
QByteArray Message::payload() const
{
return d->payload;
}
bool Message::hasProperty(Property property) const
{
return d->properties.contains(property);
}
void Message::setProperty(Property property, const QVariant &value)
{
d->properties.insert(property, value);
}
QVariant Message::property(Property property, const QVariant &defaultValue) const
{
return d->properties.value(property, defaultValue);
}
bool Message::hasHeader(const QString &header) const
{
return d->headers.contains(header);
}
void Message::setHeader(const QString &header, const QVariant &value)
{
d->headers.insert(header, value);
}
QVariant Message::header(const QString &header, const QVariant &defaultValue) const
{
return d->headers.value(header, defaultValue);
}
#if QT_VERSION < 0x050000
bool Message::isDetached() const
{
return d && d->ref == 1;
}
#endif
uint qHash(const QAMQP::Message &message, uint seed)
{
Q_UNUSED(seed);
return qHash(message.deliveryTag()) ^
qHash(message.isRedelivered()) ^
qHash(message.exchangeName()) ^
qHash(message.routingKey()) ^
qHash(message.payload());
}