searcher/searchserver/src/ccpixsearch.cpp
changeset 14 8bd192d47aaa
parent 8 6547bf8ca13a
child 16 2729d20a0010
equal deleted inserted replaced
13:fcb2a58c181b 14:8bd192d47aaa
    59 		cpix_Hits_destroy( iHits );
    59 		cpix_Hits_destroy( iHits );
    60 		}
    60 		}
    61 
    61 
    62 	delete iBaseAppClass;
    62 	delete iBaseAppClass;
    63 	delete iDefaultSearchFieldZ;
    63 	delete iDefaultSearchFieldZ;
    64 	
    64 	delete ibatchDocuments;
    65 	cpix_Query_destroy(iQuery);
    65 	cpix_Query_destroy(iQuery);
    66 	cpix_QueryParser_destroy(iQueryParser);
    66 	cpix_QueryParser_destroy(iQueryParser);
    67 	cpix_Analyzer_destroy(iAnalyzer);
    67 	cpix_Analyzer_destroy(iAnalyzer);
    68 	cpix_IdxSearcher_releaseDb(iIdxDb);
    68 	cpix_IdxSearcher_releaseDb(iIdxDb);
    69 	}
    69 	}
   206 		{
   206 		{
   207 		User::Leave(KErrDocumentAccessFailed);
   207 		User::Leave(KErrDocumentAccessFailed);
   208 		}
   208 		}
   209 	
   209 	
   210     iPendingTask = EPendingTaskDocument;
   210     iPendingTask = EPendingTaskDocument;
   211     iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, &iCurrentCpixDocument, (void*)this, &CompletionCallback);
   211     
       
   212     iCurrentCpixDocument = new cpix_Document;
       
   213     iCurrentCpixDocument->ptr_ = NULL;
       
   214     iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, &iCurrentCpixDocument, (void*)this, &CompletionCallback,1);
   212     if ( cpix_Failed(iHits) )
   215     if ( cpix_Failed(iHits) )
   213         {
   216         {
   214         SearchServerHelper::LogErrorL(*(iHits->err_));
   217         SearchServerHelper::LogErrorL(*(iHits->err_));
   215         cpix_ClearError(iHits);
   218         cpix_ClearError(iHits);
   216         User::Leave(KErrDocumentAccessFailed);
   219         User::Leave(KErrDocumentAccessFailed);
   217         }
   220         }
   218     iAsyncronizer->Start(ECPixTaskTypeGetDocument, aObserver, aMessage);
   221     iAsyncronizer->Start(ECPixTaskTypeGetDocument, aObserver, aMessage);
   219 	OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTL_EXIT );
   222 	OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTL_EXIT );
   220 	}
   223 	}
       
   224 	
       
   225 void CCPixSearch::GetBatchDocumentL(TInt aIndex, MCPixAsyncronizerObserver* aObserver, const RMessage2& aMessage, TInt aCount)
       
   226 	{	
       
   227 	PERFORMANCE_LOG_START("CCPixSearch::GetBatchDocumentL");
       
   228 	
       
   229 	if (iPendingTask != EPendingTaskNone)
       
   230 	     User::Leave(KErrInUse);
       
   231 	
       
   232 	if (aIndex<0 || aIndex >= iDocumentCount )
       
   233         {
       
   234         User::Leave(KErrDocumentAccessFailed);
       
   235         }
       
   236 	
       
   237 	ibatchDocCount = aCount;	
       
   238 	ibatchDocuments = STATIC_CAST(cpix_Document**, User::AllocZL(aCount * sizeof(cpix_Document*)));
       
   239 	for (int i =0; i< aCount; i++)
       
   240 	    {
       
   241             ibatchDocuments[i] = new cpix_Document;
       
   242             ibatchDocuments[i]->ptr_ = NULL;
       
   243 	    }
       
   244 	
       
   245     iPendingTask = EPendingTaskDocument;
       
   246     iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, ibatchDocuments, (void*)this, &CompletionCallback, aCount);
       
   247     if ( cpix_Failed(iHits) )
       
   248         {
       
   249         SearchServerHelper::LogErrorL(*(iHits->err_));
       
   250         cpix_ClearError(iHits);
       
   251         User::Leave(KErrDocumentAccessFailed);
       
   252         }
       
   253     iAsyncronizer->Start(ECPixTaskTypeGetBatchDocument, aObserver, aMessage);
       
   254 	}
   221 
   255 
   222 CSearchDocument* CCPixSearch::GetDocumentCompleteL()
   256 CSearchDocument* CCPixSearch::GetDocumentCompleteL()
   223 	{
   257 	{
   224 	OstTraceFunctionEntry0( CCPIXSEARCH_GETDOCUMENTCOMPLETEL_ENTRY );
   258 	OstTraceFunctionEntry0( CCPIXSEARCH_GETDOCUMENTCOMPLETEL_ENTRY );
   225 	PERFORMANCE_LOG_START("CCPixSearch::GetDocumentCompleteL");
   259 	PERFORMANCE_LOG_START("CCPixSearch::GetDocumentCompleteL");
   228     iPendingTask = EPendingTaskNone;
   262     iPendingTask = EPendingTaskNone;
   229 	
   263 	
   230 	cpix_Hits_asyncDocResults(iHits, iPendingJobId);
   264 	cpix_Hits_asyncDocResults(iHits, iPendingJobId);
   231 	SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed);
   265 	SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed);
   232 	
   266 	
   233 	return ConvertDocumentL( &iCurrentCpixDocument );
   267 	return ConvertDocumentL( iCurrentCpixDocument );
   234 #if 0 // TODO XXX TIM
   268 #if 0 // TODO XXX TIM
   235 	const wchar_t* documentId = cpix_Document_getFieldValue(&iCurrentCpixDocument, LCPIX_DOCUID_FIELD);
   269 	const wchar_t* documentId = cpix_Document_getFieldValue(&iCurrentCpixDocument, LCPIX_DOCUID_FIELD);
   236 	SearchServerHelper::CheckCpixErrorL(&iCurrentCpixDocument, KErrDatabaseQueryFailed);
   270 	SearchServerHelper::CheckCpixErrorL(&iCurrentCpixDocument, KErrDatabaseQueryFailed);
   237 	
   271 	
   238 	TPtrC documentIdPtr(KNullDesC);
   272 	TPtrC documentIdPtr(KNullDesC);
   292 	CleanupStack::Pop(document);
   326 	CleanupStack::Pop(document);
   293 	
   327 	
   294 	OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTCOMPLETEL_EXIT );
   328 	OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTCOMPLETEL_EXIT );
   295 	return document;
   329 	return document;
   296 #endif // 0
   330 #endif // 0
       
   331 	}
       
   332 	
       
   333 RPointerArray<CSearchDocument> CCPixSearch::GetBatchDocumentCompleteL()
       
   334 	{
       
   335 	PERFORMANCE_LOG_START("CCPixSearch::GetBatchDocumentCompleteL");
       
   336 	
       
   337     // Request is no more pending
       
   338     iPendingTask = EPendingTaskNone;
       
   339 	
       
   340 	cpix_Hits_asyncDocResults(iHits, iPendingJobId);
       
   341 	SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed);
       
   342 	
       
   343 	return ConvertBatchDocumentL( ibatchDocuments, ibatchDocCount );
   297 	}
   344 	}
   298 
   345 
   299 void CCPixSearch::SetAnalyzerL(const TDesC& aAnalyzer)
   346 void CCPixSearch::SetAnalyzerL(const TDesC& aAnalyzer)
   300 	{
   347 	{
   301 	cpix_QueryParser_destroy( iQueryParser ); 
   348 	cpix_QueryParser_destroy( iQueryParser ); 
   386 
   433 
   387 TBool CCPixSearch::IsOpen()
   434 TBool CCPixSearch::IsOpen()
   388 	{
   435 	{
   389 	return (iIdxDb != NULL);
   436 	return (iIdxDb != NULL);
   390 	}
   437 	}
   391 
   438 // End of File