Make sure to disconnect the adapter in the destructor

This commit is contained in:
Pietro Cerutti 2014-10-02 15:47:33 +02:00 committed by Jan-Erik Rediger
parent 9069b147b0
commit 4a632a6038
2 changed files with 14 additions and 6 deletions

View File

@ -1,6 +1,6 @@
/*- /*-
* Copyright (C) 2014 Pietro Cerutti <gahr@gahr.ch> * Copyright (C) 2014 Pietro Cerutti <gahr@gahr.ch>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
* are met: * are met:
@ -9,7 +9,7 @@
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* *
* THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@ -69,12 +69,19 @@ class RedisQtAdapter : public QObject {
} }
public: public:
RedisQtAdapter(QObject * parent = 0) RedisQtAdapter(QObject * parent = 0)
: QObject(parent), m_ctx(0), m_read(0), m_write(0) { } : QObject(parent), m_ctx(0), m_read(0), m_write(0) { }
~RedisQtAdapter() { } ~RedisQtAdapter() {
if (m_ctx != 0) {
m_ctx->ev.data = NULL;
}
}
void setContext(redisAsyncContext * ac) { int setContext(redisAsyncContext * ac) {
if (ac->ev.data != NULL) {
return REDIS_ERR;
}
m_ctx = ac; m_ctx = ac;
m_ctx->ev.data = this; m_ctx->ev.data = this;
m_ctx->ev.addRead = RedisQtAddRead; m_ctx->ev.addRead = RedisQtAddRead;
@ -82,6 +89,7 @@ class RedisQtAdapter : public QObject {
m_ctx->ev.addWrite = RedisQtAddWrite; m_ctx->ev.addWrite = RedisQtAddWrite;
m_ctx->ev.delWrite = RedisQtDelWrite; m_ctx->ev.delWrite = RedisQtDelWrite;
m_ctx->ev.cleanup = RedisQtCleanup; m_ctx->ev.cleanup = RedisQtCleanup;
return REDIS_OK;
} }
private: private:

View File

@ -13,7 +13,7 @@ class ExampleQt : public QObject {
signals: signals:
void finished(); void finished();
public slots: public slots:
void run(); void run();