qthighway/xqservice/src/xqaiwrequest.cpp
changeset 11 06b8e2af4411
parent 1 2b40d63a9c3d
child 14 6fbed849b4f4
--- a/qthighway/xqservice/src/xqaiwrequest.cpp	Thu May 27 13:42:11 2010 +0300
+++ b/qthighway/xqservice/src/xqaiwrequest.cpp	Fri Jun 11 14:26:25 2010 +0300
@@ -33,7 +33,8 @@
       currentRequest(NULL),
       errorMsg(),
       errorCode(0),
-      asyncErrorSet(false)
+      completeSignalConnected(false),
+      errorSignalConnected(false)
 {
 
     XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest: %s %s,%d,%x",
@@ -57,7 +58,8 @@
       currentRequest(NULL),
       errorMsg(),
       errorCode(0),
-      asyncErrorSet(false)
+      completeSignalConnected(false),
+      errorSignalConnected(false)
 {
     XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest (uri): %s %s,%x",
                           qPrintable(descriptor.interfaceName()),
@@ -85,7 +87,8 @@
      currentRequest(NULL),
       errorMsg(),
       errorCode(0),
-      asyncErrorSet(false)
+      completeSignalConnected(false),
+      errorSignalConnected(false)
 {
 
    XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest (file): %s %x",
@@ -116,7 +119,8 @@
       currentRequest(NULL),
       errorMsg(),
       errorCode(0),
-      asyncErrorSet(false)
+      completeSignalConnected(false),
+      errorSignalConnected(false)
 {
 
     XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest (file handle): %x",
@@ -139,10 +143,13 @@
 {
     XQSERVICE_DEBUG_PRINT("~XQAiwRequest::XQAiwRequest");
 
-    // Disconnect error
-    if (asyncErrorSet)
+    // Disconnect signals
+    if (completeSignalConnected)
     {
         disconnect(currentRequest, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleAsyncResponse(const QVariant&)));
+    }
+    if (errorSignalConnected)
+    {
         disconnect(currentRequest, SIGNAL(requestError(int,const QString&)), this, SLOT(handleAsyncError(int)));
     }
     
@@ -387,13 +394,18 @@
 
     QStringList list;
     bool res = true;
-    if (!isSynchronous() && !asyncErrorSet)
+    if (!isSynchronous() && !completeSignalConnected)
     {
         // Set async request signals once
         XQSERVICE_DEBUG_PRINT("request::async send");
         connect(currentRequest, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleAsyncResponse(const QVariant&)));
+        completeSignalConnected = true;
+    }
+    if (!errorSignalConnected)
+    {
+        // Connect always error signal  once
         connect(currentRequest, SIGNAL(requestError(int,const QString&)), this, SLOT(handleAsyncError(int)));
-        asyncErrorSet = true;
+        errorSignalConnected = true;
     }
     
     XQSERVICE_DEBUG_PRINT("request::send>>>");