diff -r 4ae315f230bc -r a6539d1e8e43 predictivesearch/PcsServer/src/CPcsSession.cpp --- 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 searchResults; - RPointerArray searchSeqs; + RPointerArray searchResults; + RPointerArray 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; }