qthighway/xqservice/src/xqservicerequest.cpp
changeset 8 71781823f776
parent 4 90517678cc4f
child 19 46686fb6258c
--- a/qthighway/xqservice/src/xqservicerequest.cpp	Fri May 14 16:41:33 2010 +0300
+++ b/qthighway/xqservice/src/xqservicerequest.cpp	Thu May 27 13:42:11 2010 +0300
@@ -77,7 +77,7 @@
     XQServiceRequest* m_Parent;
     XQRequestUtil m_RequestUtil;
     XQServiceManager* serviceManager;
-
+    QString m_uniqueChannelName;
     
 };
 
@@ -172,8 +172,8 @@
 */
 XQServiceRequest::~XQServiceRequest()
 {
-    XQSERVICE_DEBUG_PRINT("XQServiceRequest::~XQServiceRequest=");
-    XQServiceAdaptor::cancelPendingSend(m_data->m_Service);
+    XQSERVICE_DEBUG_PRINT("XQServiceRequest::~XQServiceRequest %s", qPrintable(m_data->m_uniqueChannelName));
+    XQServiceAdaptor::cancelPendingSend(m_data->m_uniqueChannelName);
     delete m_data;
 }
 
@@ -247,13 +247,16 @@
     // This shall be removed by the server
     // !!!
     addArg(qVariantFromValue(m_data->m_RequestUtil.mInfo));
-
-    XQSERVICE_DEBUG_PRINT("XQServiceRequest::send(2):mDescriptor");
-        
+       
     // Pass always the util instance onwards as user data.
     // It can be utilized by the XQServiceManager::startServer
     // e.g. to optimize startup of a service server
-    return XQServiceAdaptor::send(m_data->m_Service,  message(), m_data->m_arguments, retData, m_data->m_Synchronous,m_data,
+
+    // Create unique channel name to separate multiple client requests to same channel name.
+    quint32 handle = (unsigned int)m_data;
+    m_data->m_uniqueChannelName = QString("%1:").arg(handle) + m_data->m_Service;
+    XQSERVICE_DEBUG_PRINT("XQServiceRequest::send(2):uniqueChannel=%s", qPrintable(m_data->m_uniqueChannelName));
+    return XQServiceAdaptor::send(m_data->m_uniqueChannelName,  message(), m_data->m_arguments, retData, m_data->m_Synchronous,m_data,
                                  (const void *)&m_data->m_RequestUtil);
 }
 /*!