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 DEFINES += QAMQP_STATIC
} else { } else {
DEFINES += QAMQP_SHARED DEFINES += QAMQP_SHARED
win32:QAMQP_LIBS = -lqamqp1 win32:QAMQP_LIBS = -lqamqp0
} }
isEmpty(PREFIX) { isEmpty(PREFIX) {

View File

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

View File

@ -1,3 +1,5 @@
#include <QHash>
#include "qamqpmessage.h" #include "qamqpmessage.h"
#include "qamqpmessage_p.h" #include "qamqpmessage_p.h"
using namespace QAMQP; using namespace QAMQP;
@ -30,6 +32,21 @@ Message &Message::operator=(const Message &other)
return *this; 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 bool Message::isValid() const
{ {
return d->deliveryTag != 0 && return d->deliveryTag != 0 &&
@ -91,3 +108,13 @@ QVariant Message::header(const QString &header, const QVariant &defaultValue) co
{ {
return d->headers.value(header, defaultValue); 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 &operator=(const Message &other);
~Message(); ~Message();
bool operator==(const Message &message) const;
inline bool operator!=(const Message &message) const { return !(operator==(message)); }
enum Property { enum Property {
ContentType = AMQP_BASIC_CONTENT_TYPE_FLAG, ContentType = AMQP_BASIC_CONTENT_TYPE_FLAG,
ContentEncoding = AMQP_BASIC_CONTENT_ENCODING_FLAG, ContentEncoding = AMQP_BASIC_CONTENT_ENCODING_FLAG,
@ -65,4 +68,7 @@ private:
Q_DECLARE_METATYPE(QAMQP::Message::PropertyHash) 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 #endif // QAMQPMESSAGE_H

View File

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