From: <tom...@us...> - 2010-11-07 18:02:36
|
Revision: 3801 http://tora.svn.sourceforge.net/tora/?rev=3801&view=rev Author: tomasstraupis Date: 2010-11-07 18:02:29 +0000 (Sun, 07 Nov 2010) Log Message: ----------- Remove unused toNoBlockQuery class. Modified Paths: -------------- trunk/tora/src/CMakeLists.txt trunk/tora/src/Makefile.am Removed Paths: ------------- trunk/tora/src/tonoblockquery.cpp trunk/tora/src/tonoblockquery.h Modified: trunk/tora/src/CMakeLists.txt =================================================================== --- trunk/tora/src/CMakeLists.txt 2010-11-07 17:29:03 UTC (rev 3800) +++ trunk/tora/src/CMakeLists.txt 2010-11-07 18:02:29 UTC (rev 3801) @@ -122,7 +122,6 @@ todockbar.h topushbutton.h torunnable.h - tonoblockquery.h tocurrent.h todatatype.h todebug.h @@ -162,7 +161,6 @@ tomessage.h # tomysqlkeywords.h tonewconnection.h -# tonoblockquery.h tooutput.h toparamget.h topiechart.h @@ -331,7 +329,6 @@ tomodeleditor.cpp tomessage.cpp tonewconnection.cpp - tonoblockquery.cpp #win only? toocistub.cpp # tooracleconnection.cpp tooracleextract.cpp Modified: trunk/tora/src/Makefile.am =================================================================== --- trunk/tora/src/Makefile.am 2010-11-07 17:29:03 UTC (rev 3800) +++ trunk/tora/src/Makefile.am 2010-11-07 18:02:29 UTC (rev 3801) @@ -81,7 +81,6 @@ tomodeleditor.cpp tomodeleditor.h \ tomessage.cpp tomessage.h \ tonewconnection.cpp tonewconnection.h \ - tonoblockquery.cpp tonoblockquery.h \ toeventquery.cpp toeventquery.h \ toeventquerytask.cpp toeventquerytask.h \ toparamget.cpp toparamget.h \ @@ -333,7 +332,6 @@ moc_toconnectionimport.cpp \ moc_todescribe.cpp \ moc_torunnable.cpp \ - moc_tonoblockquery.cpp \ moc_toeventquery.cpp \ moc_toeventquerytask.cpp \ moc_tocurrent.cpp \ Deleted: trunk/tora/src/tonoblockquery.cpp =================================================================== --- trunk/tora/src/tonoblockquery.cpp 2010-11-07 17:29:03 UTC (rev 3800) +++ trunk/tora/src/tonoblockquery.cpp 2010-11-07 18:02:29 UTC (rev 3801) @@ -1,460 +0,0 @@ - -/* BEGIN_COMMON_COPYRIGHT_HEADER - * - * TOra - An Oracle Toolkit for DBA's and developers - * - * Shared/mixed copyright is held throughout files in this product - * - * Portions Copyright (C) 2000-2001 Underscore AB - * Portions Copyright (C) 2003-2005 Quest Software, Inc. - * Portions Copyright (C) 2004-2008 Numerous Other Contributors - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; only version 2 of - * the License is valid for this program. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * As a special exception, you have permission to link this program - * with the Oracle Client libraries and distribute executables, as long - * as you follow the requirements of the GNU GPL in regard to all of the - * software in the executable aside from Oracle client libraries. - * - * Specifically you are not permitted to link this program with the - * Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. - * And you are not permitted to distribute binaries compiled against - * these libraries. - * - * You may link this product with any GPL'd Qt library. - * - * All trademarks belong to their respective owners. - * - * END_COMMON_COPYRIGHT_HEADER */ - -#include "utils.h" - -#include "toconf.h" -#include "tonoblockquery.h" -#include "toresultstats.h" -#include "totool.h" - -#include <qapplication.h> - -#include <signal.h> -#include <sys/types.h> -#ifndef Q_OS_WIN32 -#include <unistd.h> -#endif -#include <stdio.h> - -#define PREFETCH_SIZE 5000 - -void toNoBlockQuery::queryTask::run(void) -{ - int Length = 0; - try - { - if (Parent.Query) - Parent.Query->execute(Parent.SQL, Parent.Param); - - bool eof = true; - { - toLocker lock (Parent.Lock) - ; - if (Parent.Query) - { - Parent.Description = Parent.Query->describe(); - Length = Parent.Query->columns(); - eof = Parent.Query->eof(); - } - } - - if (!eof) - { - bool signaled = false; - for (;;) - { - for (int i = 0;i < Length && Parent.Query;i++) - { - toQValue value(Parent.Query->readValueNull()); - { - toLocker lock (Parent.Lock) - ; - Parent.ReadingValues.insert(Parent.ReadingValues.end(), value); - if (Parent.ReadingValues.size() == 1) - { - if (signaled) - { - Parent.Lock.unlock(); - Parent.Continue.down(); - Parent.Lock.lock(); - } - Parent.Running.up(); - signaled = true; - } - } - } - toLocker lock (Parent.Lock) - ; - if (!Parent.Query || Parent.Query->eof()) - break; - else - { - if (Parent.ReadingValues.size() > PREFETCH_SIZE) - { - Parent.Lock.unlock(); - Parent.Continue.down(); - signaled = false; - Parent.Lock.lock(); - } - } - if (Parent.Quit) - break; - } - } - if (Parent.Query) - Parent.Processed = Parent.Query->rowsProcessed(); - else - Parent.Processed = 0; - } - catch (const toConnection::exception &str) - { - toLocker lock (Parent.Lock) - ; - Parent.Error = str; - } - catch (const QString &str) - { - toLocker lock (Parent.Lock) - ; - Parent.Error = str; - } - catch(std::exception const &e) { - toLocker lock (Parent.Lock) - ; - Parent.Error = QString(e.what()); - } - catch (...) - { - toLocker lock (Parent.Lock) - ; - Parent.Error = qApp->translate("toNoBlockQuery", "Unknown exception"); - } - - toLocker lock (Parent.Lock) - ; - if (!Parent.Error.isNull() && !Parent.Query->eof()) - try - { - Parent.Query->cancel(); - } - catch (...) - {} - delete Parent.Query; - Parent.Query = NULL; - Parent.Running.up(); - Parent.EOQ = true; -} - -toQValue toNoBlockQuery::readValueNull() -{ - if (CurrentValue == Values.end()) - { - Lock.lock(); - bool eoq = EOQ; - Lock.unlock(); - if (!eoq) - Running.down(); - toLocker lock (Lock) - ; - Values = ReadingValues; - CurrentValue = Values.begin(); - ReadingValues.clear(); - Continue.up(); - if (CurrentValue == Values.end()) - throw qApp->translate("toNoBlockQuery", "Reading past end of query"); - } - checkError(); - toQValue ret = *CurrentValue; - CurrentValue++; - return ret; -} - -toQValue toNoBlockQuery::readValue() -{ - return toNull(readValueNull()); -} - -toNoBlockQuery::toNoBlockQuery(toConnection &conn, const QString &sql, - const toQList ¶m, toResultStats *stats) - : SQL(sql), - Error(QString::null), - Param(param), - Statistics(stats) -{ - CurrentValue = Values.end(); - Quit = EOQ = false; - Processed = 0; - - try - { - Query = NULL; - Query = new toQuery(conn, toQuery::Long); - } - catch (...) - { - delete Query; - Query = NULL; - Error = qApp->translate("toNoBlockQuery", "Couldn't open query"); - throw; - } - - try - { - if (Statistics) - Statistics->changeSession(*Query); - } - catch (...) - { - Statistics = NULL; - } - - int val = toConfigurationSingle::Instance().autoLong(); - if (val != 0) - Started = time(NULL) + val; - else - Started = 0; - - toLocker lock (Lock) - ; - try - { - toThread *thread = new toThread(new queryTask(*this)); - thread->start(); - } - catch (...) - { - Error = qApp->translate("toNoBlockQuery", "Failed to start background query thread"); - while (Running.getValue()) - Running.down(); - Quit = EOQ = true; - delete Query; - Query = NULL; - } -} - -toNoBlockQuery::toNoBlockQuery(toConnection &conn, toQuery::queryMode mode, - const QString &sql, const toQList ¶m, toResultStats *stats) - : SQL(sql), - Error(QString::null), - Param(param), - Statistics(stats) -{ - CurrentValue = Values.end(); - Quit = EOQ = false; - Processed = 0; - - try - { - Query = NULL; - Query = new toQuery(conn, mode); - } - catch (...) - { - delete Query; - Query = NULL; - Error = qApp->translate("toNoBlockQuery", "Couldn't open query"); - throw; - } - - try - { - if (Statistics) - Statistics->changeSession(*Query); - } - catch (...) - { - Statistics = NULL; - } - - int val = toConfigurationSingle::Instance().autoLong(); - if (val != 0) - Started = time(NULL) + val; - else - Started = 0; - - toLocker lock (Lock) - ; - try - { - toThread *thread = new toThread(new queryTask(*this)); - thread->start(); - } - catch (...) - { - Error = qApp->translate("toNoBlockQuery", "Failed to start background query thread"); - while (Running.getValue()) - Running.down(); - Quit = EOQ = true; - delete Query; - Query = NULL; - } -} - -toQDescList const &toNoBlockQuery::describe(void) const -{ - toLocker lock (Lock) - ; - checkError(); - return Description; -} - -bool toNoBlockQuery::eof(void) -{ - toLocker lock (Lock) - ; - checkError(); - return EOQ && CurrentValue == Values.end() && !ReadingValues.size(); -} - -int toNoBlockQuery::rowsProcessed(void) -{ - toLocker lock (Lock) - ; - checkError(); - return Processed; -} - -void toNoBlockQuery::stop(void) -{ - Lock.lock(); - int sleep = 100; - while (!EOQ) - { - Quit = true; - ReadingValues.clear(); - Continue.up(); - Lock.unlock(); - - toThread::msleep(sleep); - - Lock.lock(); - if (Running.getValue() == 0) - { - if (Query) - { - Query->cancel(); - sleep += 100; - } - } - } - Lock.unlock(); - - if (Statistics) - { - Statistics->refreshStats(false); - } - while (Query) - { - fprintf(stderr, "Internal error, query not deleted after stopping it.\n"); - toThread::msleep(100); - } -} - -toNoBlockQuery::~toNoBlockQuery() -{ - try - { - stop(); - } - TOCATCH -} - -bool toNoBlockQuery::poll(void) -{ - unsigned int count = 0; - for (toQList::iterator i = CurrentValue;i != Values.end();i++) - count++; - if (Running.getValue() > 0) - { - toLocker lock (Lock) - ; - count += ReadingValues.size(); - } - - if ((count >= Description.size() && Description.size() > 0) || eof()) - return true; - - Lock.lock(); - if (Started > 0 && Started < time(NULL) && !Description.size()) - { - if (Query && (Query->mode() == toQuery::Normal || Query->mode() == toQuery::Background)) - { - try - { - toStatusMessage(qApp->translate("toNoBlockQuery", "Restarting query in own connection"), false, false); - toConnection &conn = Query->connection(); - Lock.unlock(); - stop(); - toLocker lock (Lock) - ; - while (Running.getValue() > 0) - Running.down(); - while (Continue.getValue() > 0) - Continue.down(); - Error = QString(); - ReadingValues.clear(); - Values.clear(); - CurrentValue = Values.end(); - Quit = EOQ = false; - Processed = 0; - - Query = new toQuery(conn, toQuery::Long); - - try - { - if (Statistics) - Statistics->changeSession(*Query); - } - catch (...) - { - Statistics = NULL; - } - - toThread *thread = new toThread(new queryTask(*this)); - thread->start(); - } - catch (...) - { - Error = qApp->translate("toNoBlockQuery", "Failed to start background query thread"); - while (Running.getValue()) - Running.down(); - Quit = EOQ = true; - delete Query; - Query = NULL; - } - } - else - Lock.unlock(); - } - else - Lock.unlock(); - - return false; -} - -void toNoBlockQuery::checkError() const -{ - if (!Error.isNull()) - { - throw Error; - } -} Deleted: trunk/tora/src/tonoblockquery.h =================================================================== --- trunk/tora/src/tonoblockquery.h 2010-11-07 17:29:03 UTC (rev 3800) +++ trunk/tora/src/tonoblockquery.h 2010-11-07 18:02:29 UTC (rev 3801) @@ -1,195 +0,0 @@ - -/* BEGIN_COMMON_COPYRIGHT_HEADER - * - * TOra - An Oracle Toolkit for DBA's and developers - * - * Shared/mixed copyright is held throughout files in this product - * - * Portions Copyright (C) 2000-2001 Underscore AB - * Portions Copyright (C) 2003-2005 Quest Software, Inc. - * Portions Copyright (C) 2004-2009 Numerous Other Contributors - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; only version 2 of - * the License is valid for this program. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * As a special exception, you have permission to link this program - * with the Oracle Client libraries and distribute executables, as long - * as you follow the requirements of the GNU GPL in regard to all of the - * software in the executable aside from Oracle client libraries. - * - * Specifically you are not permitted to link this program with the - * Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. - * And you are not permitted to distribute binaries compiled against - * these libraries. - * - * You may link this product with any GPL'd Qt library. - * - * All trademarks belong to their respective owners. - * - * END_COMMON_COPYRIGHT_HEADER */ - -#ifndef TONOBLOCKQUERY_H -#define TONOBLOCKQUERY_H - -#include "config.h" -#include "toconnection.h" -#include "tothread.h" - -#include <QObject> -#include <time.h> - -class toResultStats; - -/** This is class to be able to run a query in the background without - * blocking until a response is available from OCI. - */ - -class toNoBlockQuery : public QObject -{ - Q_OBJECT; - -private: - /** A task to implement running the query. - */ -class queryTask : public toTask - { - toNoBlockQuery &Parent; - public: - queryTask(toNoBlockQuery &parent) - : Parent(parent) - { } - virtual void run(void); - }; - friend class queryTask; - - /** This semaphore indicates wether the query is still running. - */ - toSemaphore Running; - /** This semaphore indicates wether the child thread should - * continue reading values. - */ - toSemaphore Continue; - /** Lock for all this stuff - */ - mutable toLock Lock; - /** Current location that values are being read. - */ - toQList::iterator CurrentValue; - /** Values read by the task. This can be changed without holding @ref Lock. - */ - toQList ReadingValues; - /** Values ready to be read by client. - */ - toQList Values; - /** Indicator if at end of query. - */ - bool EOQ; - /** Indicator if to quit reading from query. - */ - bool Quit; - /** SQL to execute. - */ - QString SQL; - /** Error string if error occurs. - */ - toConnection::exception Error; - /** Number of rows processed. - */ - int Processed; - /** Parameters to pass to query before execution. - */ - toQList Param; - /** Statistics to be used if any. - */ - QPointer<toResultStats> Statistics; - /** Description of result - */ - toQDescList Description; - /** When query is executed - */ - time_t Started; - /** Query used to run query - */ - toQuery *Query; - /** Throw error if any. - */ - void checkError() const; - /** Stop reading query - */ - void stop(); -public: - /** Create a new query. - * @param conn Connection to run on. - * @param sql SQL to execute. - * @param param Parameters to pass to query. - * @param statistics Optional statistics widget to update with values from query. - */ - toNoBlockQuery(toConnection &conn, - const QString &sql, - const toQList ¶m, - toResultStats *statistics = NULL); - /** Create a new query. - * @param conn Connection to run on. - * @param mode Query mode to execute query in. - * @param sql SQL to execute. - * @param param Parameters to pass to query. - * @param statistics Optional statistics widget to update with values from query. - */ - toNoBlockQuery(toConnection &conn, - toQuery::queryMode mode, - const QString &sql, - const toQList ¶m, - toResultStats *statistics = NULL); - virtual ~toNoBlockQuery(); - - /** Poll if any result is available. - * @return True if at least one row is available. - */ - bool poll(void); - - /** Get description of columns. - * @return Description of columns list. Don't modify this list. - */ - const toQDescList &describe(void) const; - - /** Read the next value from the query. - * @return The next available value. - */ - toQValue readValue(void); - /** Read the next value from the query. Don't send NULL as string. - * @return The next available value. - */ - toQValue readValueNull(void); - - /** Get the number of rows processed. - * @return Number of rows processed. - */ - int rowsProcessed(void); - - /** Check if at end of query. - * @return True if query is done. - */ - bool eof(void); - - /** - * return query's sql command - * - */ - const QString sql(void) - { - return SQL; - } -}; - -#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |