searcher/searchserver/src/ccpixsearch.cpp
changeset 24 65456528cac2
parent 16 2729d20a0010
--- a/searcher/searchserver/src/ccpixsearch.cpp	Tue Oct 05 13:15:12 2010 +0530
+++ b/searcher/searchserver/src/ccpixsearch.cpp	Fri Oct 15 12:09:28 2010 +0530
@@ -27,7 +27,7 @@
 #endif
 
 
-
+Cpt::Mutex CCPixSearch::hitMutex_;
 
 CCPixSearch* CCPixSearch::NewL()
 	{
@@ -121,12 +121,15 @@
 void CCPixSearch::CompletionCallback(void *aCookie, cpix_JobId aJobId)
 	{
 	CCPixSearch* object = (CCPixSearch*)aCookie;
-
+    {
+    Cpt::SyncRegion
+                sr(hitMutex_);
 	// Sanity check
 	if (object == NULL || 
 		object->iPendingJobId != aJobId)
 		return;
-	
+
+    }
 	// Call the asyncronizers completion code
 	CCPixAsyncronizer* asyncronizer = object->iAsyncronizer;
 	asyncronizer->CompletionCallback();
@@ -174,11 +177,14 @@
     // Commit the search
     if ( iQuery )
 	    {
+        {
+        Cpt::SyncRegion
+                    sr(hitMutex_);
 	    iPendingJobId = cpix_IdxSearcher_asyncSearch(iIdxDb, iQuery, (void*)this, &CompletionCallback);
 	    SearchServerHelper::CheckCpixErrorL(iIdxDb, KErrDatabaseQueryFailed);
     	iPendingTask = EPendingTaskSearch;
 	    iAsyncronizer->Start(ECPixTaskTypeSearch, aObserver, aMessage);
-	    
+        }
         OstTraceFunctionExit0( CCPIXSEARCH_SEARCHL_EXIT );
         return ETrue;
         }
@@ -222,7 +228,11 @@
     
     iCurrentCpixDocument = new cpix_Document;
     iCurrentCpixDocument->ptr_ = NULL;
+    {
+    Cpt::SyncRegion
+                sr(hitMutex_);
     iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, &iCurrentCpixDocument, (void*)this, &CompletionCallback,1);
+
     if ( cpix_Failed(iHits) )
         {
         SearchServerHelper::LogErrorL(*(iHits->err_));
@@ -230,7 +240,9 @@
         User::Leave(KErrDocumentAccessFailed);
         }
     iAsyncronizer->Start(ECPixTaskTypeGetDocument, aObserver, aMessage);
+    }
 	OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTL_EXIT );
+
 	}
 	
 void CCPixSearch::GetBatchDocumentL(TInt aIndex, MCPixAsyncronizerObserver* aObserver, const RMessage2& aMessage, TInt aCount)
@@ -254,7 +266,11 @@
 	    }
 	
     iPendingTask = EPendingTaskDocument;
+    {
+    Cpt::SyncRegion
+                sr(hitMutex_);
     iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, ibatchDocuments, (void*)this, &CompletionCallback, aCount);
+ 
     if ( cpix_Failed(iHits) )
         {
         SearchServerHelper::LogErrorL(*(iHits->err_));
@@ -262,6 +278,7 @@
         User::Leave(KErrDocumentAccessFailed);
         }
     iAsyncronizer->Start(ECPixTaskTypeGetBatchDocument, aObserver, aMessage);
+    }
 	}
 
 CSearchDocument* CCPixSearch::GetDocumentCompleteL()
@@ -276,69 +293,6 @@
 	SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed);
 	
 	return ConvertDocumentL( iCurrentCpixDocument );
-#if 0 // TODO XXX TIM
-	const wchar_t* documentId = cpix_Document_getFieldValue(&iCurrentCpixDocument, LCPIX_DOCUID_FIELD);
-	SearchServerHelper::CheckCpixErrorL(&iCurrentCpixDocument, KErrDatabaseQueryFailed);
-	
-	TPtrC documentIdPtr(KNullDesC);
-	if (documentId)
-		documentIdPtr.Set(reinterpret_cast<const TUint16*>(documentId));
-
-	const wchar_t* documentAppClass = cpix_Document_getFieldValue(&iCurrentCpixDocument, LCPIX_APPCLASS_FIELD);
-	SearchServerHelper::CheckCpixErrorL(&iCurrentCpixDocument, KErrDatabaseQueryFailed);
-	
-	TPtrC documentAppClassPtr(KNullDesC);
-	if (documentAppClass)
-		documentAppClassPtr.Set(reinterpret_cast<const TUint16*>(documentAppClass));
-
-	const wchar_t* documentExcerpt = cpix_Document_getFieldValue(&iCurrentCpixDocument, LCPIX_EXCERPT_FIELD);
-	SearchServerHelper::CheckCpixErrorL(&iCurrentCpixDocument, KErrDatabaseQueryFailed);
-	
-	TPtrC documentExcerptPtr(KNullDesC);
-	if (documentExcerpt)
-		documentExcerptPtr.Set(reinterpret_cast<const TUint16*>(documentExcerpt));
-
-	CSearchDocument* document = CSearchDocument::NewLC(documentIdPtr, documentAppClassPtr, documentExcerptPtr);
-
-	cpix_DocFieldEnum* docFieldEnum = cpix_Document_fields(&iCurrentCpixDocument);
-
-	// push to cleanup stack.
-	CleanupStack::PushL( TCleanupItem(CpixDocFieldEnumDestroyer, docFieldEnum) );
-
-	SearchServerHelper::CheckCpixErrorL(&iCurrentCpixDocument, KErrDocumentAccessFailed);
-
-	cpix_Field field;
-
-	while (cpix_DocFieldEnum_hasMore(docFieldEnum))
-		{
-		cpix_DocFieldEnum_next(docFieldEnum, &field);
-		SearchServerHelper::CheckCpixErrorL(docFieldEnum, KErrDatabaseQueryFailed);
-		
-		const wchar_t* name = cpix_Field_name(&field);
-		SearchServerHelper::CheckCpixErrorL(&field, KErrDatabaseQueryFailed);
-
-		TPtrC namePtr( reinterpret_cast<const TUint16*>( name ) );
-		if (    namePtr == TPtrC( (TUint16*)LCPIX_DOCUID_FIELD )
-			 || namePtr == TPtrC( (TUint16*)LCPIX_APPCLASS_FIELD )
-			 || namePtr == TPtrC( (TUint16*)LCPIX_EXCERPT_FIELD ) )
-			{
-			continue;  // These fields have already been added
-			}
-
-		const wchar_t* value = cpix_Field_stringValue(&field);
-		SearchServerHelper::CheckCpixErrorL(&field, KErrDatabaseQueryFailed);
-		
-		TPtrC stringvalue( reinterpret_cast<const TUint16*>( value ) );
-		document->AddFieldL(namePtr, stringvalue);
-		}
-
-	CleanupStack::PopAndDestroy(docFieldEnum);
-	
-	CleanupStack::Pop(document);
-	
-	OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTCOMPLETEL_EXIT );
-	return document;
-#endif // 0
 	}
 	
 RPointerArray<CSearchDocument> CCPixSearch::GetBatchDocumentCompleteL()