fix windows build

- add equality operator to QAMQP::Message
- add qHash for QAMQP::Message... because MSVC
This commit is contained in:
Matt Broadstone 2014-09-11 11:46:40 -04:00
parent 84746ff77c
commit 7e151dfc7b
5 changed files with 39 additions and 2 deletions

View File

@ -11,7 +11,7 @@ contains(QAMQP_LIBRARY_TYPE, staticlib) {
DEFINES += QAMQP_STATIC
} else {
DEFINES += QAMQP_SHARED
win32:QAMQP_LIBS = -lqamqp1
win32:QAMQP_LIBS = -lqamqp0
}
isEmpty(PREFIX) {

View File

@ -11,6 +11,8 @@
# include <QSslError>
#endif
#include "qamqpglobal.h"
#include "qamqpauthenticator.h"
#include "qamqptable.h"
#include "qamqpframe_p.h"
@ -27,7 +29,7 @@ class Exchange;
class Network;
class Connection;
class Authenticator;
class ClientPrivate : public Frame::MethodHandler
class QAMQP_EXPORT ClientPrivate : public Frame::MethodHandler
{
public:
enum MethodId {

View File

@ -1,3 +1,5 @@
#include <QHash>
#include "qamqpmessage.h"
#include "qamqpmessage_p.h"
using namespace QAMQP;
@ -30,6 +32,21 @@ Message &Message::operator=(const Message &other)
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 &&
@ -91,3 +108,13 @@ QVariant Message::header(const QString &header, const QVariant &defaultValue) co
{
return d->headers.value(header, defaultValue);
}
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());
}

View File

@ -20,6 +20,9 @@ public:
Message &operator=(const Message &other);
~Message();
bool operator==(const Message &message) const;
inline bool operator!=(const Message &message) const { return !(operator==(message)); }
enum Property {
ContentType = AMQP_BASIC_CONTENT_TYPE_FLAG,
ContentEncoding = AMQP_BASIC_CONTENT_ENCODING_FLAG,
@ -65,4 +68,7 @@ private:
Q_DECLARE_METATYPE(QAMQP::Message::PropertyHash)
// NOTE: needed only for MSVC support, don't depend on this hash
QAMQP_EXPORT uint qHash(const QAMQP::Message &key, uint seed = 0);
#endif // QAMQPMESSAGE_H

View File

@ -548,3 +548,5 @@ bool Queue::cancel(bool noWait)
d->sendFrame(frame);
return true;
}
#include "moc_qamqpqueue.cpp"