predictivesearch/PcsServer/src/CPcsSession.cpp
branchRCL_3
changeset 39 a6539d1e8e43
parent 15 e8e3147d53eb
child 45 34879f5cfc63
--- a/predictivesearch/PcsServer/src/CPcsSession.cpp	Tue May 25 12:26:45 2010 +0300
+++ b/predictivesearch/PcsServer/src/CPcsSession.cpp	Wed Jun 09 09:26:27 2010 +0300
@@ -168,6 +168,11 @@
 			ChangeSortOrderL(aMessage);
 			break;
 
+        case EGetAdaptiveGrid:
+            PRINT ( _L("Received function EGetAdaptiveGrid") );
+			GetAdaptiveGridL(aMessage);
+			break;
+
 	    case EShutdown:
 		    PRINT ( _L("Received function EShutdown") );
 			ShutdownServerL(aMessage);
@@ -246,8 +251,8 @@
 
 	    // -------------------------------------------------------------
 
-        RPointerArray<CPsClientData>  searchResults;
-        RPointerArray<CPsPattern>     searchSeqs;
+        RPointerArray<CPsClientData> searchResults;
+        RPointerArray<CPsPattern> searchSeqs;
 
         iServer->PluginInterface()->PerformSearchL(*iSettings,
                                                    *psQuery,
@@ -330,11 +335,9 @@
         iDes = NULL;
     }
 
-
     PRINT ( _L("End CPcsSession::GetAsyncPcsResultsL") );
 
     __LATENCY_MARKEND ( _L("CPcsSession::GetAsyncPcsResultsL") );
-
 }
 
 // ----------------------------------------------------------------------------
@@ -385,7 +388,6 @@
 	                                         searchSeqs,
 	                                         sequenceLoc);
 
-
     // Delete the search query and search data
 	CleanupStack::PopAndDestroy( data );
     CleanupStack::PopAndDestroy( psQuery );
@@ -449,7 +451,6 @@
 	
     PRINT ( _L("End CPcsSession::SearchInputL") );
     __LATENCY_MARKEND ( _L("CPcsSession::SearchInputL") );
-
 }
 
 // ----------------------------------------------------------------------------
@@ -487,7 +488,7 @@
     // Data to be searched
     // Read data size
     TUint16 szData = searchDataStream.ReadUint16L();
-    HBufC* data =  HBufC::NewL(searchDataStream, szData);
+    HBufC* data = HBufC::NewL(searchDataStream, szData);
 
     // searchQueryStream, searchQuery
     CleanupStack::PopAndDestroy(2, searchData);
@@ -495,10 +496,7 @@
 
     // -------------------------------------------------------------
 
-    iServer->PluginInterface()->SearchMatchStringL(*psQuery,
-                                                   *data,
-                                                   ptr);
-
+    iServer->PluginInterface()->SearchMatchStringL( *psQuery, *data, ptr );
 
     // Delete the search query and search data
     CleanupStack::PopAndDestroy( data );
@@ -510,7 +508,6 @@
     
     PRINT ( _L("End CPcsSession::SearchMatchStringL") );
     __LATENCY_MARKEND ( _L("CPcsSession::SearchMatchStringL") );
-
 }
 
 // ----------------------------------------------------------------------------
@@ -594,8 +591,6 @@
     // URI
     HBufC* uri = HBufC::NewLC(stream, uriSize);
 
-    
-
     // --------------------------------------------------------------
 
     // Get the data order
@@ -762,6 +757,71 @@
 }
 
 // ----------------------------------------------------------------------------
+// CPcsSession::GetAdaptiveGridL
+//
+// ----------------------------------------------------------------------------
+void CPcsSession::GetAdaptiveGridL(const RMessage2& aMessage)
+{
+    PRINT ( _L("Enter CPcsSession::GetAdaptiveGridL") );
+    __LATENCY_MARK ( _L("CPcsSession::GetAdaptiveGridL") );
+
+    // Create the result output buffer
+    HBufC* outBuf = HBufC::NewLC( KBufferMaxLen );
+    TPtr outBufPtr( outBuf->Des() );
+
+    // ------- Read the Data Stores from the message -------
+    
+    // Read URIs from the message
+    HBufC8* buffer = HBufC8::NewLC(KBufferMaxLen);
+
+    TPtr8 bufferPtr(buffer->Des());
+    aMessage.ReadL(0, bufferPtr);
+
+    // Stream over the buffer
+    RDesReadStream stream(bufferPtr);
+    stream.PushL();
+
+    // Number of URIs
+    TUint16 uriCount = stream.ReadUint16L();
+
+    CDesCArrayFlat* dataStores = NULL;
+    dataStores = new (ELeave) CDesCArrayFlat( uriCount );
+    CleanupStack::PushL( dataStores );
+
+    for (TUint i = 0; i < uriCount; i++ )
+        {
+        // Size of URI
+        TUint16 uriSize = stream.ReadUint16L();
+    
+        // URI
+        HBufC* uri = HBufC::NewLC( stream, uriSize );
+        dataStores->AppendL( *uri );
+        CleanupStack::PopAndDestroy( uri );
+        }
+    
+    // -----------------------------------------------------
+    
+    // Read the Company Name from the message
+    TBool companyName = aMessage.Int1();
+    
+    // Get the Adaptive Grid
+    iServer->PluginInterface()->GetAdaptiveGridL( *dataStores, companyName, outBufPtr );
+
+    // Write the Adaptive Grid to the message
+    aMessage.Write( 2, *outBuf );
+    aMessage.Complete( KErrNone );
+
+    // Cleanup
+    CleanupStack::PopAndDestroy( dataStores );
+    CleanupStack::PopAndDestroy( &stream ); 
+    CleanupStack::PopAndDestroy( buffer ); 
+    CleanupStack::PopAndDestroy( outBuf );
+    
+    PRINT ( _L("End CPcsSession::GetAdaptiveGridL") );
+    __LATENCY_MARKEND ( _L("CPcsSession::GetAdaptiveGridL") );
+}
+
+// ----------------------------------------------------------------------------
 // CPcsSession::ShutdownServerL
 //
 // ----------------------------------------------------------------------------
@@ -781,7 +841,15 @@
 // ----------------------------------------------------------------------------
 CPsQuery* CPcsSession::ReadQueryLC( TInt aParam, const RMessage2& aMessage )
 {
+    PRINT( _L("Enter CPcsSession::ReadQueryLC") );
     TInt size = aMessage.GetDesLength( aParam );
+
+    if(size < 0)
+    {
+        PRINT ( _L("DesLength <0, Leave from  CPcsSession::ReadQueryLC"));
+        User::Leave(KErrArgument);
+    }
+
     HBufC8* tempBuf = HBufC8::NewLC( size );
 
     TPtr8 ptr( tempBuf->Des() );
@@ -801,6 +869,7 @@
     CleanupStack::PopAndDestroy( &stream );
     CleanupStack::PopAndDestroy( tempBuf );
     CleanupStack::PushL( psQuery );
-    
+	
+    PRINT ( _L("End CPcsSession::ReadQueryLC") );
     return psQuery;
 }