predictivesearch/PcsServer/src/CPcsSession.cpp
branchRCL_3
changeset 39 a6539d1e8e43
parent 15 e8e3147d53eb
child 45 34879f5cfc63
equal deleted inserted replaced
35:4ae315f230bc 39:a6539d1e8e43
   166         case ESetSortOrder:
   166         case ESetSortOrder:
   167 			PRINT ( _L("Received function ESetSortOrder") );
   167 			PRINT ( _L("Received function ESetSortOrder") );
   168 			ChangeSortOrderL(aMessage);
   168 			ChangeSortOrderL(aMessage);
   169 			break;
   169 			break;
   170 
   170 
       
   171         case EGetAdaptiveGrid:
       
   172             PRINT ( _L("Received function EGetAdaptiveGrid") );
       
   173 			GetAdaptiveGridL(aMessage);
       
   174 			break;
       
   175 
   171 	    case EShutdown:
   176 	    case EShutdown:
   172 		    PRINT ( _L("Received function EShutdown") );
   177 		    PRINT ( _L("Received function EShutdown") );
   173 			ShutdownServerL(aMessage);
   178 			ShutdownServerL(aMessage);
   174 			break;
   179 			break;
   175     }
   180     }
   244 	    // Read search query from the message
   249 	    // Read search query from the message
   245 	    CPsQuery* psQuery = ReadQueryLC( 0, aMessage );
   250 	    CPsQuery* psQuery = ReadQueryLC( 0, aMessage );
   246 
   251 
   247 	    // -------------------------------------------------------------
   252 	    // -------------------------------------------------------------
   248 
   253 
   249         RPointerArray<CPsClientData>  searchResults;
   254         RPointerArray<CPsClientData> searchResults;
   250         RPointerArray<CPsPattern>     searchSeqs;
   255         RPointerArray<CPsPattern> searchSeqs;
   251 
   256 
   252         iServer->PluginInterface()->PerformSearchL(*iSettings,
   257         iServer->PluginInterface()->PerformSearchL(*iSettings,
   253                                                    *psQuery,
   258                                                    *psQuery,
   254                                                    searchResults,
   259                                                    searchResults,
   255                                                    searchSeqs);
   260                                                    searchSeqs);
   328 		iBufferOverFlow = EFalse;
   333 		iBufferOverFlow = EFalse;
   329     	delete iDes;
   334     	delete iDes;
   330         iDes = NULL;
   335         iDes = NULL;
   331     }
   336     }
   332 
   337 
   333 
       
   334     PRINT ( _L("End CPcsSession::GetAsyncPcsResultsL") );
   338     PRINT ( _L("End CPcsSession::GetAsyncPcsResultsL") );
   335 
   339 
   336     __LATENCY_MARKEND ( _L("CPcsSession::GetAsyncPcsResultsL") );
   340     __LATENCY_MARKEND ( _L("CPcsSession::GetAsyncPcsResultsL") );
   337 
       
   338 }
   341 }
   339 
   342 
   340 // ----------------------------------------------------------------------------
   343 // ----------------------------------------------------------------------------
   341 // CPcsSession::SearchInputL
   344 // CPcsSession::SearchInputL
   342 //
   345 //
   382 
   385 
   383 	iServer->PluginInterface()->SearchInputL(*psQuery,
   386 	iServer->PluginInterface()->SearchInputL(*psQuery,
   384 	                                         *data,
   387 	                                         *data,
   385 	                                         searchSeqs,
   388 	                                         searchSeqs,
   386 	                                         sequenceLoc);
   389 	                                         sequenceLoc);
   387 
       
   388 
   390 
   389     // Delete the search query and search data
   391     // Delete the search query and search data
   390 	CleanupStack::PopAndDestroy( data );
   392 	CleanupStack::PopAndDestroy( data );
   391     CleanupStack::PopAndDestroy( psQuery );
   393     CleanupStack::PopAndDestroy( psQuery );
   392 
   394 
   447 	
   449 	
   448 	CleanupStack::PopAndDestroy(2, buf); // buf, stream
   450 	CleanupStack::PopAndDestroy(2, buf); // buf, stream
   449 	
   451 	
   450     PRINT ( _L("End CPcsSession::SearchInputL") );
   452     PRINT ( _L("End CPcsSession::SearchInputL") );
   451     __LATENCY_MARKEND ( _L("CPcsSession::SearchInputL") );
   453     __LATENCY_MARKEND ( _L("CPcsSession::SearchInputL") );
   452 
       
   453 }
   454 }
   454 
   455 
   455 // ----------------------------------------------------------------------------
   456 // ----------------------------------------------------------------------------
   456 // CPcsSession::SearchMatchStringL
   457 // CPcsSession::SearchMatchStringL
   457 //
   458 //
   485     searchDataStream.PushL();
   486     searchDataStream.PushL();
   486 
   487 
   487     // Data to be searched
   488     // Data to be searched
   488     // Read data size
   489     // Read data size
   489     TUint16 szData = searchDataStream.ReadUint16L();
   490     TUint16 szData = searchDataStream.ReadUint16L();
   490     HBufC* data =  HBufC::NewL(searchDataStream, szData);
   491     HBufC* data = HBufC::NewL(searchDataStream, szData);
   491 
   492 
   492     // searchQueryStream, searchQuery
   493     // searchQueryStream, searchQuery
   493     CleanupStack::PopAndDestroy(2, searchData);
   494     CleanupStack::PopAndDestroy(2, searchData);
   494     CleanupStack::PushL( data );
   495     CleanupStack::PushL( data );
   495 
   496 
   496     // -------------------------------------------------------------
   497     // -------------------------------------------------------------
   497 
   498 
   498     iServer->PluginInterface()->SearchMatchStringL(*psQuery,
   499     iServer->PluginInterface()->SearchMatchStringL( *psQuery, *data, ptr );
   499                                                    *data,
       
   500                                                    ptr);
       
   501 
       
   502 
   500 
   503     // Delete the search query and search data
   501     // Delete the search query and search data
   504     CleanupStack::PopAndDestroy( data );
   502     CleanupStack::PopAndDestroy( data );
   505     CleanupStack::PopAndDestroy( psQuery );
   503     CleanupStack::PopAndDestroy( psQuery );
   506 
   504 
   508     aMessage.Complete(KErrNone);
   506     aMessage.Complete(KErrNone);
   509     CleanupStack::PopAndDestroy(des);
   507     CleanupStack::PopAndDestroy(des);
   510     
   508     
   511     PRINT ( _L("End CPcsSession::SearchMatchStringL") );
   509     PRINT ( _L("End CPcsSession::SearchMatchStringL") );
   512     __LATENCY_MARKEND ( _L("CPcsSession::SearchMatchStringL") );
   510     __LATENCY_MARKEND ( _L("CPcsSession::SearchMatchStringL") );
   513 
       
   514 }
   511 }
   515 
   512 
   516 // ----------------------------------------------------------------------------
   513 // ----------------------------------------------------------------------------
   517 // CPcsSession::IsLanguageSupportedL
   514 // CPcsSession::IsLanguageSupportedL
   518 //
   515 //
   591 	// Size of URI
   588 	// Size of URI
   592 	TInt uriSize = stream.ReadUint16L();
   589 	TInt uriSize = stream.ReadUint16L();
   593 
   590 
   594     // URI
   591     // URI
   595     HBufC* uri = HBufC::NewLC(stream, uriSize);
   592     HBufC* uri = HBufC::NewLC(stream, uriSize);
   596 
       
   597     
       
   598 
   593 
   599     // --------------------------------------------------------------
   594     // --------------------------------------------------------------
   600 
   595 
   601     // Get the data order
   596     // Get the data order
   602     RArray<TInt> dataOrder;
   597     RArray<TInt> dataOrder;
   760 
   755 
   761     PRINT ( _L("End CPcsSession::ChangeSortOrderL") );
   756     PRINT ( _L("End CPcsSession::ChangeSortOrderL") );
   762 }
   757 }
   763 
   758 
   764 // ----------------------------------------------------------------------------
   759 // ----------------------------------------------------------------------------
       
   760 // CPcsSession::GetAdaptiveGridL
       
   761 //
       
   762 // ----------------------------------------------------------------------------
       
   763 void CPcsSession::GetAdaptiveGridL(const RMessage2& aMessage)
       
   764 {
       
   765     PRINT ( _L("Enter CPcsSession::GetAdaptiveGridL") );
       
   766     __LATENCY_MARK ( _L("CPcsSession::GetAdaptiveGridL") );
       
   767 
       
   768     // Create the result output buffer
       
   769     HBufC* outBuf = HBufC::NewLC( KBufferMaxLen );
       
   770     TPtr outBufPtr( outBuf->Des() );
       
   771 
       
   772     // ------- Read the Data Stores from the message -------
       
   773     
       
   774     // Read URIs from the message
       
   775     HBufC8* buffer = HBufC8::NewLC(KBufferMaxLen);
       
   776 
       
   777     TPtr8 bufferPtr(buffer->Des());
       
   778     aMessage.ReadL(0, bufferPtr);
       
   779 
       
   780     // Stream over the buffer
       
   781     RDesReadStream stream(bufferPtr);
       
   782     stream.PushL();
       
   783 
       
   784     // Number of URIs
       
   785     TUint16 uriCount = stream.ReadUint16L();
       
   786 
       
   787     CDesCArrayFlat* dataStores = NULL;
       
   788     dataStores = new (ELeave) CDesCArrayFlat( uriCount );
       
   789     CleanupStack::PushL( dataStores );
       
   790 
       
   791     for (TUint i = 0; i < uriCount; i++ )
       
   792         {
       
   793         // Size of URI
       
   794         TUint16 uriSize = stream.ReadUint16L();
       
   795     
       
   796         // URI
       
   797         HBufC* uri = HBufC::NewLC( stream, uriSize );
       
   798         dataStores->AppendL( *uri );
       
   799         CleanupStack::PopAndDestroy( uri );
       
   800         }
       
   801     
       
   802     // -----------------------------------------------------
       
   803     
       
   804     // Read the Company Name from the message
       
   805     TBool companyName = aMessage.Int1();
       
   806     
       
   807     // Get the Adaptive Grid
       
   808     iServer->PluginInterface()->GetAdaptiveGridL( *dataStores, companyName, outBufPtr );
       
   809 
       
   810     // Write the Adaptive Grid to the message
       
   811     aMessage.Write( 2, *outBuf );
       
   812     aMessage.Complete( KErrNone );
       
   813 
       
   814     // Cleanup
       
   815     CleanupStack::PopAndDestroy( dataStores );
       
   816     CleanupStack::PopAndDestroy( &stream ); 
       
   817     CleanupStack::PopAndDestroy( buffer ); 
       
   818     CleanupStack::PopAndDestroy( outBuf );
       
   819     
       
   820     PRINT ( _L("End CPcsSession::GetAdaptiveGridL") );
       
   821     __LATENCY_MARKEND ( _L("CPcsSession::GetAdaptiveGridL") );
       
   822 }
       
   823 
       
   824 // ----------------------------------------------------------------------------
   765 // CPcsSession::ShutdownServerL
   825 // CPcsSession::ShutdownServerL
   766 //
   826 //
   767 // ----------------------------------------------------------------------------
   827 // ----------------------------------------------------------------------------
   768 void CPcsSession::ShutdownServerL(const RMessage2& aMessage)
   828 void CPcsSession::ShutdownServerL(const RMessage2& aMessage)
   769 {
   829 {
   779 // CPcsSession::ReadQueryLC
   839 // CPcsSession::ReadQueryLC
   780 //
   840 //
   781 // ----------------------------------------------------------------------------
   841 // ----------------------------------------------------------------------------
   782 CPsQuery* CPcsSession::ReadQueryLC( TInt aParam, const RMessage2& aMessage )
   842 CPsQuery* CPcsSession::ReadQueryLC( TInt aParam, const RMessage2& aMessage )
   783 {
   843 {
       
   844     PRINT( _L("Enter CPcsSession::ReadQueryLC") );
   784     TInt size = aMessage.GetDesLength( aParam );
   845     TInt size = aMessage.GetDesLength( aParam );
       
   846 
       
   847     if(size < 0)
       
   848     {
       
   849         PRINT ( _L("DesLength <0, Leave from  CPcsSession::ReadQueryLC"));
       
   850         User::Leave(KErrArgument);
       
   851     }
       
   852 
   785     HBufC8* tempBuf = HBufC8::NewLC( size );
   853     HBufC8* tempBuf = HBufC8::NewLC( size );
   786 
   854 
   787     TPtr8 ptr( tempBuf->Des() );
   855     TPtr8 ptr( tempBuf->Des() );
   788     aMessage.ReadL( aParam, ptr );
   856     aMessage.ReadL( aParam, ptr );
   789 
   857 
   799 
   867 
   800     CleanupStack::Pop( psQuery ); // temporarily
   868     CleanupStack::Pop( psQuery ); // temporarily
   801     CleanupStack::PopAndDestroy( &stream );
   869     CleanupStack::PopAndDestroy( &stream );
   802     CleanupStack::PopAndDestroy( tempBuf );
   870     CleanupStack::PopAndDestroy( tempBuf );
   803     CleanupStack::PushL( psQuery );
   871     CleanupStack::PushL( psQuery );
   804     
   872 	
       
   873     PRINT ( _L("End CPcsSession::ReadQueryLC") );
   805     return psQuery;
   874     return psQuery;
   806 }
   875 }