201033
authorhgs
Wed, 25 Aug 2010 13:17:41 +0530
changeset 16 2729d20a0010
parent 14 8bd192d47aaa
child 17 7cda54f2d97f
201033
harvester/harvesterserver/src/ccontentinfodb.cpp
qcpix/src/platform/s60/inc/cpixdocumentprivate.h
qcpix/src/platform/s60/src/cpixutils.cpp
rom/cpix_mw.iby
searchengine/cpix/cpix/inc/public/appclass-hierarchy.txt
searchengine/cpix/cpix/src/prefixqueryparser.cpp
searcher/searchclient/group/searchclient.mmp
searcher/searchclient/src/ccpixsearcher.cpp
searcher/searchclient/src/csearchdocument.cpp
searcher/searchclient/src/rsearchserversession.cpp
searcher/searchclient/traces/CCPixSearcherTraces.h
searcher/searchclient/traces/RSearchServerSessionTraces.h
searcher/searchclient/traces/fixed_id.definitions
searcher/searchserver/group/searchserver.mmp
searcher/searchserver/inc/CCPixAbstractSearcher.h
searcher/searchserver/src/CCPixAbstractSearcher.cpp
searcher/searchserver/src/ccpixsearch.cpp
searcher/searchserver/src/csearchserversubsession.cpp
searcher/searchserver/traces/CSearchServerSubSessionTraces.h
searcher/searchserver/traces/fixed_id.definitions
searchsrv_plat/cpix_framework_api/inc/csearchdocument.h
searchsrv_plat/cpix_utility_api/group/bld.inf
searchsrv_plat/cpix_utility_api/inc/cpixmaindefs.h
searchsrv_plat/cpix_utility_api/inc/cpixwatchdogcommon.h
sis/cpixsearch.pkg.source
watchdog/cenrep/20029AB8.cre
watchdog/cenrep/20029AB8.txt
watchdog/group/bld.inf
watchdog/group/watchdog.mmp
watchdog/inc/centrepmonitor.h
watchdog/inc/cwdmonitor.h
watchdog/inc/mcentrephandler.h
watchdog/sis/watchdog.pkg.source
watchdog/src/centrepmonitor.cpp
watchdog/src/cwdmonitor.cpp
--- a/harvester/harvesterserver/src/ccontentinfodb.cpp	Mon Aug 09 10:51:30 2010 +0530
+++ b/harvester/harvesterserver/src/ccontentinfodb.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -266,9 +266,12 @@
     sql.Format( KCISqlFormatSeek, &aContentName );
     
     RSqlStatement stmt;
-    stmt.Prepare( iDatabase , sql );
-    
-    TBool isfound = ( KSqlAtRow == stmt.Next() )?ETrue:EFalse; 
+    TBool isfound = EFalse;
+    //Error check necessary to avoid sqldb 2 panic, 
+    //if sqlstatement preparation fails, call to Next() raises this panic
+    TInt err = stmt.Prepare( iDatabase , sql );
+    if ( err == KErrNone)
+        isfound = ( KSqlAtRow == stmt.Next() )?ETrue:EFalse; 
     OstTraceFunctionExit0( CCONTENTINFODB_FINDL_EXIT );
     return isfound;
     }
@@ -290,11 +293,14 @@
     sql.Copy( KSelectAllRowsFormat );
     
     RSqlStatement stmt;
-    stmt.Prepare( iDatabase , sql );
-    
-    while ( KSqlAtEnd != stmt.Next() )
-        ++count;
-        
+    TInt err = stmt.Prepare( iDatabase , sql );
+    //Error check necessary to avoid sqldb 2 panic, 
+    //if sqlstatement preparation fails, call to Next() raises this panic     
+    if( err == KErrNone)
+        {
+        while ( KSqlAtEnd != stmt.Next() )
+            ++count;
+        }
     OstTraceFunctionExit0( CCONTENTINFODB_GETCONTENTCOUNTL_EXIT );
     return count;
     }
--- a/qcpix/src/platform/s60/inc/cpixdocumentprivate.h	Mon Aug 09 10:51:30 2010 +0530
+++ b/qcpix/src/platform/s60/inc/cpixdocumentprivate.h	Wed Aug 25 13:17:41 2010 +0530
@@ -32,6 +32,14 @@
     QString iExcerpt;
     QString iBaseAppClass;
     QList< CpixDocumentField* > iFields;
+    
+    CpixDocumentPrivate::~CpixDocumentPrivate()
+        {
+        for (int i =0; i< iFields.count();i++)
+            {
+            delete iFields.at(i);
+            }
+        }
 };
 
 #endif //_CPIXDOCUMENTPVTIMPL_H
--- a/qcpix/src/platform/s60/src/cpixutils.cpp	Mon Aug 09 10:51:30 2010 +0530
+++ b/qcpix/src/platform/s60/src/cpixutils.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -46,26 +46,30 @@
 	
 CpixDocument** CpixBatchDocFromCSearchDocument( TInt aReturnDoc, CSearchDocument** aDoc )
     {
-    if( aDoc == NULL ) return NULL;
+    if( aDoc == NULL || !aReturnDoc ) return NULL;
     CpixDocument** cpixBatchDocs = NULL;
     cpixBatchDocs = (CpixDocument**)malloc ( sizeof(CpixDocument*) * (aReturnDoc));
     for (int count = 0; count < aReturnDoc; count++)
         {        
         CpixDocument* cpixDoc = CpixDocument::newInstance();
-        cpixDoc->setBaseAppClass( QStringFromDescriptor( aDoc[count]->AppClass() ) );
-        cpixDoc->setDocId( QStringFromDescriptor( aDoc[count]->Id() ) );
-        cpixDoc->setExcerpt( QStringFromDescriptor( aDoc[count]->Excerpt() ) );
-    
-        int fieldCount = aDoc[count]->FieldCount();
-        for( int i=0; i< fieldCount; i++ )
+        if ( cpixDoc )
             {
-            const CDocumentField& field = aDoc[count]->Field( i );
-            cpixDoc->addField( QStringFromDescriptor( field.Name() ), QStringFromDescriptor( field.Value() ), field.Config() );
+            cpixDoc->setBaseAppClass( QStringFromDescriptor( aDoc[count]->AppClass() ) );
+            cpixDoc->setDocId( QStringFromDescriptor( aDoc[count]->Id() ) );
+            cpixDoc->setExcerpt( QStringFromDescriptor( aDoc[count]->Excerpt() ) );
+        
+            int fieldCount = aDoc[count]->FieldCount();
+            for( int i=0; i< fieldCount; i++ )
+                {
+                const CDocumentField& field = aDoc[count]->Field( i );
+                cpixDoc->addField( QStringFromDescriptor( field.Name() ), QStringFromDescriptor( field.Value() ), field.Config() );
+                }
             }
         cpixBatchDocs[count]= cpixDoc;
         delete aDoc[count];
         aDoc[count] = NULL;
         }
     delete aDoc;
+    aDoc = NULL;
     return cpixBatchDocs;
     }
--- a/rom/cpix_mw.iby	Mon Aug 09 10:51:30 2010 +0530
+++ b/rom/cpix_mw.iby	Wed Aug 25 13:17:41 2010 +0530
@@ -59,6 +59,7 @@
 data=ZSYSTEM\install\cpixsearch_stub.sis    System\Install\cpixsearch_stub.sis
 
 data=DATAZ_\private\10202be9\2001f6fb.cre       private\10202be9\2001f6fb.cre
+data=DATAZ_\private\10202be9\20029AB8.cre       private\10202be9\20029AB8.cre
 
 #endif //FF_SEARCH_SW
 
--- a/searchengine/cpix/cpix/inc/public/appclass-hierarchy.txt	Mon Aug 09 10:51:30 2010 +0530
+++ b/searchengine/cpix/cpix/inc/public/appclass-hierarchy.txt	Wed Aug 25 13:17:41 2010 +0530
@@ -124,6 +124,7 @@
 	/* The order of fields in excerpt is as below. The order in this case
 	 * is the order of fields shown when you 'Edit' the contact.
 	 */
+    | [ IsGroup		    ]    {EStoreYes | EIndexNo}
     | [ GivenName           ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptNo}
     | [ FamilyName          ]    {EStoreYes | EIndexTokenized | EIndexFreeText} {ExcerptNo}
     | [ PhoneNumber         ]    {EStoreYes | EIndexTokenized}   								{ExcerptYes}
--- a/searchengine/cpix/cpix/src/prefixqueryparser.cpp	Mon Aug 09 10:51:30 2010 +0530
+++ b/searchengine/cpix/cpix/src/prefixqueryparser.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -60,7 +60,7 @@
 			void add(auto_ptr<Query> q) {
 				if ( q.get() ) {
 					if ( bq_ ) {
-						bq_->add( q.release(), true, true, false ); 
+						bq_->add( q.release(), true, false, false ); 
 					} else {
 						if ( q_.get() ) {
 							auto_ptr<BooleanQuery> bq( new BooleanQuery() );
--- a/searcher/searchclient/group/searchclient.mmp	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchclient/group/searchclient.mmp	Wed Aug 25 13:17:41 2010 +0530
@@ -43,4 +43,7 @@
 
 CAPABILITY        CAP_GENERAL_DLL
 
+//Used to enable highlighter 
+//MACRO USE_HIGHLIGHTER
+
 // End of File
--- a/searcher/searchclient/src/ccpixsearcher.cpp	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchclient/src/ccpixsearcher.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -98,6 +98,7 @@
 //
 EXPORT_C void CCPixSearcher::OpenDatabaseL(const TDesC& aBaseAppClass)
 	{
+	OstTraceFunctionEntry0( CCPIXSEARCHER_OPENDATABASEL_ENTRY );
 	if ( IsActive() )
 		{
 		User::Leave(KErrInUse);
@@ -112,12 +113,14 @@
 	iBaseAppClass = aBaseAppClass.AllocL();
 	iSubSession.OpenDatabaseL(ETrue, *iBaseAppClass, *iDefaultSearchField);
 	iIsDatabaseOpen = ETrue; 
+	OstTraceFunctionExit0( CCPIXSEARCHER_OPENDATABASEL_EXIT );
 	}
 
 //
 //
 EXPORT_C void CCPixSearcher::OpenDatabaseL(MCPixOpenDatabaseRequestObserver& aObserver, const TDesC& aBaseAppClass)
 	{
+	OstTraceFunctionEntry0( DUP1_CCPIXSEARCHER_OPENDATABASEL_ENTRY );
 	if ( IsActive() )
 		{
 		User::Leave( KErrInUse);
@@ -135,18 +138,22 @@
 	iBaseAppClass = aBaseAppClass.AllocL();
 	iSubSession.OpenDatabase(ETrue, *iBaseAppClass, *iDefaultSearchField, iStatus); // Create if not found
 	SetActive(); 
+	OstTraceFunctionExit0( DUP1_CCPIXSEARCHER_OPENDATABASEL_EXIT );
 	}
 
 EXPORT_C void CCPixSearcher::SetAnalyzerL( const TDesC& aAnalyzer )
 	{
+	OstTraceFunctionEntry0( CCPIXSEARCHER_SETANALYZERL_ENTRY );
 	if ( !iIsDatabaseOpen ) 	User::Leave(KErrNotReady);
 	if ( IsActive() ) 			User::Leave(KErrInUse);
 
 	iSubSession.SetAnalyzerL( aAnalyzer ); 
+	OstTraceFunctionExit0( CCPIXSEARCHER_SETANALYZERL_EXIT );
 	}
 
 EXPORT_C void CCPixSearcher::SetAnalyzerL( MCPixSetAnalyzerRequestObserver& aObserver, const TDesC& aAnalyzer )
 	{
+	OstTraceFunctionEntry0( DUP1_CCPIXSEARCHER_SETANALYZERL_ENTRY );
 	if ( !iIsDatabaseOpen ) 	User::Leave(KErrNotReady);
 	if ( IsActive() ) 			User::Leave(KErrInUse);
 	
@@ -156,6 +163,7 @@
 	iState = EStateSetAnalyzer; 
 	iSubSession.SetAnalyzer( aAnalyzer, iStatus );
 	SetActive(); 
+	OstTraceFunctionExit0( DUP1_CCPIXSEARCHER_SETANALYZERL_EXIT );
 	}
 	
 	EXPORT_C void CCPixSearcher::SetQueryParserL( TQueryParser aQueryParser ) 
@@ -206,7 +214,7 @@
 	{
 	OstTraceFunctionEntry0( CCPIXSEARCHER_SEARCHL_ENTRY );
 	PERFORMANCE_LOG_START("CCPixSearcher::SearchL");
-	
+	OstTraceExt2( TRACE_NORMAL, CCPIXSEARCHER_SEARCHL, "CCPixSearcher::SearchL::sync::;Search string =%S;field=%S", aQueryString, aDocumentField );
 	if ( !iIsDatabaseOpen ) 	
 		User::Leave( KErrNotReady );
 	if ( IsActive() )
@@ -229,6 +237,7 @@
     OstTraceFunctionEntry0( DUP1_CCPIXSEARCHER_SEARCHL_ENTRY );
     PERFORMANCE_LOG_START("CCPixSearcher::SearchL");
 
+	OstTraceExt2( TRACE_NORMAL, DUP1_CCPIXSEARCHER_SEARCHL, "CCPixSearcher::SearchL::Async::;Search string=%S;Field=%S", aQueryString, aDocumentField );
 	if ( !iIsDatabaseOpen ) 	User::Leave( KErrNotReady );
 	if ( IsActive() )
 		{
@@ -251,6 +260,7 @@
     OstTraceFunctionEntry0( CCPIXSEARCHER_GETDOCUMENTL_ENTRY );
     PERFORMANCE_LOG_START("CCPixSearcher::GetDocumentL");
     
+	OstTrace1( TRACE_NORMAL, CCPIXSEARCHER_GETDOCUMENTL, "CCPixSearcher::GetDocumentL;aIndex=%d", aIndex );
 	if ( !iIsDatabaseOpen ) 	User::Leave( KErrNotReady );
 	if ( IsActive() )
 		{
@@ -265,6 +275,7 @@
     OstTraceFunctionEntry0( DUP1_CCPIXSEARCHER_GETDOCUMENTL_ENTRY );
     PERFORMANCE_LOG_START("CCPixSearcher::GetDocumentL");
     
+    OstTrace1( TRACE_NORMAL, DUP1_CCPIXSEARCHER_GETDOCUMENTL, "CCPixSearcher::GetDocumentL::Async::;aIndex=%d", aIndex );
     if ( !iIsDatabaseOpen ) 	User::Leave( KErrNotReady );
 	if ( IsActive() )
 		{
@@ -283,6 +294,7 @@
     {
     PERFORMANCE_LOG_START("CCPixSearcher::GetBatchDocumentL");
     
+	OstTraceExt2( TRACE_NORMAL, CCPIXSEARCHER_GETBATCHDOCUMENTL, "CCPixSearcher::GetBatchDocumentL;aIndex=%d;aCount=%d", aIndex, aCount );
 	if ( !iIsDatabaseOpen ) 	User::Leave( KErrNotReady );
 	if ( IsActive() )
 		{
@@ -296,6 +308,7 @@
     {
     PERFORMANCE_LOG_START("CCPixSearcher::GetBatchDocumentL");
     
+    OstTraceExt2( TRACE_NORMAL, DUP1_CCPIXSEARCHER_GETBATCHDOCUMENTL, "CCPixSearcher::GetBatchDocumentL::Async::;aIndex=%d;aCount=%d", aIndex, aCount );
     if ( !iIsDatabaseOpen ) 	User::Leave( KErrNotReady );
 	if ( IsActive() )
 		{
@@ -381,6 +394,7 @@
 		    TRAPD( err, document = iSubSession.GetBatchDocumentObjectL( retCount ) );
 		    if ( observer.iNextDocument )
 		        {
+		        OstTraceExt2( TRACE_NORMAL, CCPIXSEARCHER_RUNL, "CCPixSearcher::RunL::BatchgetDoc::;err=%d;retcount=%d", err, retCount );
 		        if ( err == KErrNone )
 		            {
 		            observer.iNextDocument->HandleBatchDocumentL(iStatus.Int(),retCount, document);
--- a/searcher/searchclient/src/csearchdocument.cpp	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchclient/src/csearchdocument.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -246,3 +246,10 @@
 	return iBoost; 
 	}
 
+//#ifdef USE_HIGHLIGHTER
+//EXPORT_C void CSearchDocument::AddHLDisplayFieldL(const TDesC& aField)
+//    {
+//    // Needs to be tokenised to rewrite the query, but should not be searchable so EAggregateNo.
+//    AddFieldL( _L( CPIX_HL_EXCERPT_FIELD ), aField, CDocumentField::EStoreYes | CDocumentField::EIndexTokenized | CDocumentField::EAggregateNo );
+//    }
+//#endif
--- a/searcher/searchclient/src/rsearchserversession.cpp	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchclient/src/rsearchserversession.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -232,6 +232,7 @@
 	// descriptors as they will be out of scope by the time the server
 	// attempts to read or write
 	User::LeaveIfError( SendReceive(ESearchServerSearch, args) );
+	OstTrace1( TRACE_NORMAL, RSEARCHSERVERSUBSESSION_SEARCHL, "RSearchServerSubSession::SearchL::sync;iEstimatedResultsCount=%d", iEstimatedResultsCount );
 	OstTraceFunctionExit0( RSEARCHSERVERSUBSESSION_SEARCHL_EXIT );
 	}
 
--- a/searcher/searchclient/traces/CCPixSearcherTraces.h	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchclient/traces/CCPixSearcherTraces.h	Wed Aug 25 13:17:41 2010 +0530
@@ -12,6 +12,158 @@
 #define CCPIXSEARCHER_GETDOCUMENTL_ENTRY 0x8a0004
 #define DUP1_CCPIXSEARCHER_GETDOCUMENTL_ENTRY 0x8a0005
 #define CCPIXSEARCHER_GETDOCUMENTL_EXIT 0x8a0006
+#define CCPIXSEARCHER_OPENDATABASEL_ENTRY 0x8a0010
+#define CCPIXSEARCHER_OPENDATABASEL_EXIT 0x8a0011
+#define DUP1_CCPIXSEARCHER_OPENDATABASEL_ENTRY 0x8a0012
+#define DUP1_CCPIXSEARCHER_OPENDATABASEL_EXIT 0x8a0013
+#define CCPIXSEARCHER_SETANALYZERL_ENTRY 0x8a0014
+#define CCPIXSEARCHER_SETANALYZERL_EXIT 0x8a0015
+#define DUP1_CCPIXSEARCHER_SETANALYZERL_ENTRY 0x8a0016
+#define DUP1_CCPIXSEARCHER_SETANALYZERL_EXIT 0x8a0017
+#define CCPIXSEARCHER_SEARCHL 0x860003
+#define DUP1_CCPIXSEARCHER_SEARCHL 0x860004
+#define CCPIXSEARCHER_GETDOCUMENTL 0x860005
+#define DUP1_CCPIXSEARCHER_GETDOCUMENTL 0x860006
+#define CCPIXSEARCHER_GETBATCHDOCUMENTL 0x860007
+#define DUP1_CCPIXSEARCHER_GETBATCHDOCUMENTL 0x860008
+#define CCPIXSEARCHER_RUNL 0x860009
+
+
+#ifndef __KERNEL_MODE__
+#ifndef __OSTTRACEGEN2_TUINT32_CONST_TDESC16REF_CONST_TDESC16REF__
+#define __OSTTRACEGEN2_TUINT32_CONST_TDESC16REF_CONST_TDESC16REF__
+
+inline TBool OstTraceGen2( TUint32 aTraceID, const TDesC16& aParam1, const TDesC16& aParam2 )
+    {
+    TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
+    if ( retval )
+        {
+        TInt length = 0;
+        // Check that parameter lenght is not too long
+        TInt length1 = aParam1.Size();
+        if ((length + length1 + sizeof ( TUint32 )) > KOstMaxDataLength)
+            {
+            length1 = KOstMaxDataLength - (length + sizeof ( TUint32 ));
+            }
+        TInt lengthAligned1 = ( length1 + 3 ) & ~3;
+        if (lengthAligned1 > 0)
+            {
+            length = length + sizeof ( TUint32 ) + lengthAligned1;
+            }
+        // Check that parameter lenght is not too long
+        TInt length2 = aParam2.Size();
+        if ((length + length2 + sizeof ( TUint32 )) > KOstMaxDataLength)
+            {
+            length2 = KOstMaxDataLength - (length + sizeof ( TUint32 ));
+            }
+        TInt lengthAligned2 = ( length2 + 3 ) & ~3;
+        if (lengthAligned2 > 0)
+            {
+            length = length + sizeof ( TUint32 ) + lengthAligned2;
+            }
+        TUint8 data[ KOstMaxDataLength ];
+        TUint8* ptr = data;
+        // Set length to zero and calculate it againg
+        // when adding parameters
+        length = 0;
+        if (length1 > 0)
+            {
+            // Number of elements is written before data
+            // In case of Unicode string, number of elements is half of length
+            *( ( TUint32* )ptr ) = length1 / (aParam1.Size() / aParam1.Length());
+            ptr += sizeof ( TUint32 );
+            memcpy( ptr, aParam1.Ptr(), length1 );
+            ptr += length1;
+            // Fillers are written to get 32-bit alignment
+            while ( length1++ < lengthAligned1 )
+                {
+                *ptr++ = 0;
+                }
+            length += sizeof ( TUint32 ) + lengthAligned1;
+            }
+        else if (length + sizeof ( TUint32 ) <= KOstMaxDataLength)
+            {
+            *( ( TUint32* )ptr ) = 0;
+            ptr += sizeof ( TUint32 );
+            length += sizeof ( TUint32 );
+            }
+        if (length2 > 0)
+            {
+            // Number of elements is written before data
+            // In case of Unicode string, number of elements is half of length
+            *( ( TUint32* )ptr ) = length2 / (aParam2.Size() / aParam2.Length());
+            ptr += sizeof ( TUint32 );
+            memcpy( ptr, aParam2.Ptr(), length2 );
+            ptr += length2;
+            // Fillers are written to get 32-bit alignment
+            while ( length2++ < lengthAligned2 )
+                {
+                *ptr++ = 0;
+                }
+            length += sizeof ( TUint32 ) + lengthAligned2;
+            }
+        else if (length + sizeof ( TUint32 ) <= KOstMaxDataLength)
+            {
+            *( ( TUint32* )ptr ) = 0;
+            ptr += sizeof ( TUint32 );
+            length += sizeof ( TUint32 );
+            }
+        ptr -= length;
+        retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, length );
+        }
+    return retval;
+    }
+
+#endif // __OSTTRACEGEN2_TUINT32_CONST_TDESC16REF_CONST_TDESC16REF__
+
+#endif
+
+
+#ifndef __OSTTRACEGEN2_TUINT32_TINT_TINT__
+#define __OSTTRACEGEN2_TUINT32_TINT_TINT__
+
+inline TBool OstTraceGen2( TUint32 aTraceID, TInt aParam1, TInt aParam2 )
+    {
+    TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
+    if ( retval )
+        {
+        TUint8 data[ 8 ];
+        TUint8* ptr = data;
+        *( ( TInt* )ptr ) = aParam1;
+        ptr += sizeof ( TInt );
+        *( ( TInt* )ptr ) = aParam2;
+        ptr += sizeof ( TInt );
+        ptr -= 8;
+        retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 );
+        }
+    return retval;
+    }
+
+#endif // __OSTTRACEGEN2_TUINT32_TINT_TINT__
+
+
+#ifndef __OSTTRACEGEN2_TUINT32_TINT32_TINT32__
+#define __OSTTRACEGEN2_TUINT32_TINT32_TINT32__
+
+inline TBool OstTraceGen2( TUint32 aTraceID, TInt32 aParam1, TInt32 aParam2 )
+    {
+    TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
+    if ( retval )
+        {
+        TUint8 data[ 8 ];
+        TUint8* ptr = data;
+        *( ( TInt* )ptr ) = aParam1;
+        ptr += sizeof ( TInt );
+        *( ( TInt* )ptr ) = aParam2;
+        ptr += sizeof ( TInt );
+        ptr -= 8;
+        retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 );
+        }
+    return retval;
+    }
+
+#endif // __OSTTRACEGEN2_TUINT32_TINT32_TINT32__
+
 
 
 #endif
--- a/searcher/searchclient/traces/RSearchServerSessionTraces.h	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchclient/traces/RSearchServerSessionTraces.h	Wed Aug 25 13:17:41 2010 +0530
@@ -17,6 +17,7 @@
 #define RSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT 0x8a000f
 #define RSEARCHSERVERSUBSESSION_UPDATEL 0x860001
 #define DUP1_RSEARCHSERVERSUBSESSION_UPDATEL 0x860002
+#define RSEARCHSERVERSUBSESSION_SEARCHL 0x86000a
 
 
 #endif
--- a/searcher/searchclient/traces/fixed_id.definitions	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchclient/traces/fixed_id.definitions	Wed Aug 25 13:17:41 2010 +0530
@@ -3,10 +3,18 @@
 [GROUP]TRACE_NORMAL=0x86
 [TRACE]TRACE_FLOW[0x8A]_CCPIXSEARCHER_GETDOCUMENTL_ENTRY=0x4
 [TRACE]TRACE_FLOW[0x8A]_CCPIXSEARCHER_GETDOCUMENTL_EXIT=0x6
+[TRACE]TRACE_FLOW[0x8A]_CCPIXSEARCHER_OPENDATABASEL_ENTRY=0x10
+[TRACE]TRACE_FLOW[0x8A]_CCPIXSEARCHER_OPENDATABASEL_EXIT=0x11
 [TRACE]TRACE_FLOW[0x8A]_CCPIXSEARCHER_SEARCHL_ENTRY=0x1
 [TRACE]TRACE_FLOW[0x8A]_CCPIXSEARCHER_SEARCHL_EXIT=0x3
+[TRACE]TRACE_FLOW[0x8A]_CCPIXSEARCHER_SETANALYZERL_ENTRY=0x14
+[TRACE]TRACE_FLOW[0x8A]_CCPIXSEARCHER_SETANALYZERL_EXIT=0x15
 [TRACE]TRACE_FLOW[0x8A]_DUP1_CCPIXSEARCHER_GETDOCUMENTL_ENTRY=0x5
+[TRACE]TRACE_FLOW[0x8A]_DUP1_CCPIXSEARCHER_OPENDATABASEL_ENTRY=0x12
+[TRACE]TRACE_FLOW[0x8A]_DUP1_CCPIXSEARCHER_OPENDATABASEL_EXIT=0x13
 [TRACE]TRACE_FLOW[0x8A]_DUP1_CCPIXSEARCHER_SEARCHL_ENTRY=0x2
+[TRACE]TRACE_FLOW[0x8A]_DUP1_CCPIXSEARCHER_SETANALYZERL_ENTRY=0x16
+[TRACE]TRACE_FLOW[0x8A]_DUP1_CCPIXSEARCHER_SETANALYZERL_EXIT=0x17
 [TRACE]TRACE_FLOW[0x8A]_RSEARCHSERVERSUBSESSION_GETDOCUMENTL_ENTRY=0xb
 [TRACE]TRACE_FLOW[0x8A]_RSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_ENTRY=0xe
 [TRACE]TRACE_FLOW[0x8A]_RSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT=0xf
@@ -16,5 +24,13 @@
 [TRACE]TRACE_FLOW[0x8A]_RSEARCHSERVERSUBSESSION_SEARCHL_EXIT=0x8
 [TRACE]TRACE_FLOW[0x8A]_RSEARCHSERVERSUBSESSION_SEARCH_ENTRY=0x9
 [TRACE]TRACE_FLOW[0x8A]_RSEARCHSERVERSUBSESSION_SEARCH_EXIT=0xa
+[TRACE]TRACE_NORMAL[0x86]_CCPIXSEARCHER_GETBATCHDOCUMENTL=0x7
+[TRACE]TRACE_NORMAL[0x86]_CCPIXSEARCHER_GETDOCUMENTL=0x5
+[TRACE]TRACE_NORMAL[0x86]_CCPIXSEARCHER_RUNL=0x9
+[TRACE]TRACE_NORMAL[0x86]_CCPIXSEARCHER_SEARCHL=0x3
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CCPIXSEARCHER_GETBATCHDOCUMENTL=0x8
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CCPIXSEARCHER_GETDOCUMENTL=0x6
+[TRACE]TRACE_NORMAL[0x86]_DUP1_CCPIXSEARCHER_SEARCHL=0x4
 [TRACE]TRACE_NORMAL[0x86]_DUP1_RSEARCHSERVERSUBSESSION_UPDATEL=0x2
+[TRACE]TRACE_NORMAL[0x86]_RSEARCHSERVERSUBSESSION_SEARCHL=0xa
 [TRACE]TRACE_NORMAL[0x86]_RSEARCHSERVERSUBSESSION_UPDATEL=0x1
--- a/searcher/searchserver/group/searchserver.mmp	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchserver/group/searchserver.mmp	Wed Aug 25 13:17:41 2010 +0530
@@ -94,4 +94,8 @@
 
 CAPABILITY        CAP_SERVER AllFiles 
 
+//Used to enable highlighter 
+//MACRO USE_HIGHLIGHTER
+
+
 // End of File
--- a/searcher/searchserver/inc/CCPixAbstractSearcher.h	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchserver/inc/CCPixAbstractSearcher.h	Wed Aug 25 13:17:41 2010 +0530
@@ -25,8 +25,8 @@
 public: 
 	
 	enum TQueryParser {
-		EDatabaseQueryParser = 0,
-		EIncrementalQueryParser = 1
+		ECluceneQueryParser = 0,
+		EPrefixQueryParser = 1
 	};
 	
 	
@@ -111,7 +111,7 @@
 	
 	static CSearchDocument* ConvertDocumentL( cpix_Document* aDocument );
 	
-	static RPointerArray<CSearchDocument> ConvertBatchDocumentL( cpix_Document** aDocument, TInt count ); 
+	static RPointerArray<CSearchDocument> ConvertBatchDocumentL( cpix_Document**& aDocument, TInt count ); 
 	
 	static RArray<TInt> docSizeArray;
 
--- a/searcher/searchserver/src/CCPixAbstractSearcher.cpp	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchserver/src/CCPixAbstractSearcher.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -103,7 +103,7 @@
 	return document;
 	}
 	
-RPointerArray<CSearchDocument> CCPixAbstractSearcher::ConvertBatchDocumentL( cpix_Document** aDocument, TInt aCount )
+RPointerArray<CSearchDocument> CCPixAbstractSearcher::ConvertBatchDocumentL( cpix_Document**& aDocument, TInt aCount )
 	{
 	// Read first the system fields that are passed as constructor parameters 
 	//
@@ -182,11 +182,10 @@
             CleanupStack::PopAndDestroy(docFieldEnum);	
             CleanupStack::Pop(document);
             docSizeArray.AppendL( document->Size());
-            docArray.AppendL( document );
-            delete nextDocument;
-            nextDocument = NULL;                      
+            docArray.AppendL( document );                                  
             }
-        else break;
+        delete nextDocument;
+        nextDocument = NULL;
         }
 	delete aDocument;
 	aDocument = NULL;
--- a/searcher/searchserver/src/ccpixsearch.cpp	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchserver/src/ccpixsearch.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -45,7 +45,7 @@
 	}
 
 CCPixSearch::CCPixSearch()
-	: iQueryParserType(EIncrementalQueryParser),
+	: iQueryParserType(EPrefixQueryParser),
 	  iPendingTask(EPendingTaskNone)
 	  
 	{
@@ -134,6 +134,8 @@
 
 TBool CCPixSearch::SearchL(const TDesC& aSearchTerms, MCPixAsyncronizerObserver* aObserver, const RMessage2& aMessage)
     {
+    _LIT16(KPlain,"$plain");
+    _LIT16(KPrefix,"$prefix");
     OstTraceFunctionEntry0( CCPIXSEARCH_SEARCHL_ENTRY );
     PERFORMANCE_LOG_START("CCPixSearch::SearchL");
     
@@ -149,6 +151,15 @@
     TPtr searchTermsPtr = searchTerms->Des();
     searchTermsPtr.Copy(aSearchTerms);
     
+    if(aSearchTerms.Find(KPlain) == 0 && iQueryParserType == EPrefixQueryParser )
+        {
+            SetQueryParserL(ECluceneQueryParser);
+        }
+    else if (aSearchTerms.Find(KPrefix) == 0 && iQueryParserType == ECluceneQueryParser )
+        {
+            SetQueryParserL(EPrefixQueryParser);
+        }
+    
     // Destroy previous query
     cpix_Query_destroy( iQuery );
     iQuery = NULL;
@@ -379,7 +390,7 @@
 	iQueryParser = NULL; 
 	cpix_Result result; 
 	
-	if ( iQueryParserType == EDatabaseQueryParser ) 
+	if ( iQueryParserType == ECluceneQueryParser ) 
 		{
 		iQueryParser = 
 			cpix_QueryParser_create( &result, 
@@ -387,7 +398,7 @@
 									      iDefaultSearchFieldZ->Des().PtrZ()), 
 									  iAnalyzer );
 		} 
-	else if ( iQueryParserType == EIncrementalQueryParser ) 
+	else if ( iQueryParserType == EPrefixQueryParser ) 
 		{
 		iQueryParser = 
 			cpix_CreatePrefixQueryParser( &result, 
--- a/searcher/searchserver/src/csearchserversubsession.cpp	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchserver/src/csearchserversubsession.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -269,6 +269,7 @@
 	// Sanity check
 	if (!iSearchDb->IsOpen())
 		{
+		OstTrace0( TRACE_NORMAL, CSEARCHSERVERSUBSESSION_GETBATCHDOCUMENTL, "CSearchServerSubSession::GetBatchDocumentL: Panic as DB is not open" );
 		iSession->PanicClient(aMessage, EDatabaseNotOpen);
 		return;
 		}
--- a/searcher/searchserver/traces/CSearchServerSubSessionTraces.h	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchserver/traces/CSearchServerSubSessionTraces.h	Wed Aug 25 13:17:41 2010 +0530
@@ -10,6 +10,7 @@
 #define DUP1_CSEARCHSERVERSUBSESSION_CSEARCHSERVERSUBSESSION 0x86000c
 #define CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL 0x86000d
 #define DUP1_CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL 0x86000e
+#define CSEARCHSERVERSUBSESSION_GETBATCHDOCUMENTL 0x86000f
 #define CSEARCHSERVERSUBSESSION_SEARCHL_ENTRY 0x8a000c
 #define CSEARCHSERVERSUBSESSION_SEARCHL_EXIT 0x8a000d
 #define DUP1_CSEARCHSERVERSUBSESSION_SEARCHL_EXIT 0x8a000e
--- a/searcher/searchserver/traces/fixed_id.definitions	Mon Aug 09 10:51:30 2010 +0530
+++ b/searcher/searchserver/traces/fixed_id.definitions	Wed Aug 25 13:17:41 2010 +0530
@@ -32,6 +32,7 @@
 [TRACE]TRACE_NORMAL[0x86]_CPIXIDXDB_DUMPDOCUMENT=0x1
 [TRACE]TRACE_NORMAL[0x86]_CSEARCHSERVERSESSION_CSEARCHSERVERSESSION=0x9
 [TRACE]TRACE_NORMAL[0x86]_CSEARCHSERVERSUBSESSION_CSEARCHSERVERSUBSESSION=0xb
+[TRACE]TRACE_NORMAL[0x86]_CSEARCHSERVERSUBSESSION_GETBATCHDOCUMENTL=0xf
 [TRACE]TRACE_NORMAL[0x86]_CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL=0xd
 [TRACE]TRACE_NORMAL[0x86]_CSEARCHSERVER_CSEARCHSERVER=0x8
 [TRACE]TRACE_NORMAL[0x86]_DUP1_CPIXIDXDB_DUMPDOCUMENT=0x2
--- a/searchsrv_plat/cpix_framework_api/inc/csearchdocument.h	Mon Aug 09 10:51:30 2010 +0530
+++ b/searchsrv_plat/cpix_framework_api/inc/csearchdocument.h	Wed Aug 25 13:17:41 2010 +0530
@@ -181,6 +181,17 @@
 	 * ranked higher in the search results. 
 	 */
 	IMPORT_C TReal32 Boost() const; 
+	
+//#ifdef USE_HIGHLIGHTER	
+//	/**
+//     * Adds the contents to field which will be 
+//     * shown in the first line of searchUI.
+//     * The fields included here in this field should 
+//     * not be included in excerpt field(second line in seachUI)
+//     * @param aExcerpt Excerpt text to add to the document.
+//     */ 
+//    IMPORT_C void AddHLDisplayFieldL(const TDesC& aField);
+//#endif
 
 private: // Constructors
 	
--- a/searchsrv_plat/cpix_utility_api/group/bld.inf	Mon Aug 09 10:51:30 2010 +0530
+++ b/searchsrv_plat/cpix_utility_api/group/bld.inf	Wed Aug 25 13:17:41 2010 +0530
@@ -28,4 +28,5 @@
 ../inc/indevicecfg.h 		      MW_LAYER_PLATFORM_EXPORT_PATH(indevicecfg.h)
 ../inc/messageharvesterdefs.h MW_LAYER_PLATFORM_EXPORT_PATH(messageharvesterdefs.h)
 ../inc/searchserverdefs.h     MW_LAYER_PLATFORM_EXPORT_PATH(searchserverdefs.h)
-../inc/cpixcontentinfocommon.h    MW_LAYER_PLATFORM_EXPORT_PATH(cpixcontentinfocommon.h)
\ No newline at end of file
+../inc/cpixcontentinfocommon.h    MW_LAYER_PLATFORM_EXPORT_PATH(cpixcontentinfocommon.h)
+../inc/cpixwatchdogcommon.h       MW_LAYER_PLATFORM_EXPORT_PATH(cpixwatchdogcommon.h)
\ No newline at end of file
--- a/searchsrv_plat/cpix_utility_api/inc/cpixmaindefs.h	Mon Aug 09 10:51:30 2010 +0530
+++ b/searchsrv_plat/cpix_utility_api/inc/cpixmaindefs.h	Wed Aug 25 13:17:41 2010 +0530
@@ -100,6 +100,13 @@
     */
 #define LCPIX_EXCERPT_FIELD   L"_excerpt"
 
+/*
+ * The name of the optional field that will store the first line
+ * text shown in result of searchUI, used for highlighting
+ */
+
+#define LCPIX_HL_EXCERPT_FIELD  L"_hlexcerpt"
+
    /**
     * The name of the optional field that will store the application
     * ID of the document.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchsrv_plat/cpix_utility_api/inc/cpixwatchdogcommon.h	Wed Aug 25 13:17:41 2010 +0530
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef CPIXWATCHDOGCOMMON_H_
+#define CPIXWATCHDOGCOMMON_H_
+
+//Length of uid string in cenrep
+const TInt KCenrepUidLength = 20;
+//Uid of watchdog cetral repository database
+const TUid KWDrepoUidMenu = {0x20029ab8};
+const TUint32 KHarvesterServerKey = 0x1;
+const TUint32 KSearchServerKey = 0x2;
+const TUint32 KHarvesterServerUIDKey = 0x3;
+const TUint32 KHarvesterServerNAMEKey = 0x4;
+const TUint32 KSearchServerUIDKey = 0x5;
+const TUint32 KSearchServerNAMEKey = 0x6;
+const TUint32 KSearchUiUIDKey = 0x7;
+
+
+#endif /*CPIXWATCHDOGCOMMON_H_*/
--- a/sis/cpixsearch.pkg.source	Mon Aug 09 10:51:30 2010 +0530
+++ b/sis/cpixsearch.pkg.source	Wed Aug 25 13:17:41 2010 +0530
@@ -13,10 +13,14 @@
 ;
 ; UID is the app's UID
 ;
-#{"CPix Search"},(0x2001F6FB),1,0,0, TYPE=SA;$(SVN)
+#{"CPix Search"},(0x2001F6FB),1,1,0, TYPE=SA, RU;$(SVN)
 
 ; Supports Series 60 v 3.0
-[0x101F7961], 0, 0, 0, {"S60ProductID"}
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+[0x20022e6d],0,0,0,{"S60ProductID"}
 
 ; Vendor names
 %{"Nokia-EN"}
@@ -28,6 +32,11 @@
 ;@"cpix_cert_installer.sis", (0x101FB665)
 ;@"..\WidgetInstaller\sis\WidgetInstaller.sisx", (0x2001F709)
 
+; CPiX Harvester Server
+
+"$(EPOCROOT)epoc32\release\armv5\$(TARGET)\CPixHarvesterServer.exe"
+-"c:\sys\bin\CPixHarvesterServer.exe"
+
 ; CPiX Search Server
 
 "$(EPOCROOT)epoc32\release\armv5\$(TARGET)\CPixSearchServer.exe"
@@ -48,11 +57,6 @@
 ;"$(EPOCROOT)epoc32\release\armv5\$(TARGET)\qtcpixapplauncher.dll"
 ;-"c:\sys\bin\qtcpixapplauncher.dll"
 
-; CPiX Harvester Server
-
-"$(EPOCROOT)epoc32\release\armv5\$(TARGET)\CPixHarvesterServer.exe"
--"c:\sys\bin\CPixHarvesterServer.exe"
-
 ; HarvesterServer is started at boot time - copy resource file
 ; must be hardcoded 'c' drive for this file
 "$(EPOCROOT)epoc32\data\z\private\101f875a\import\2001F6FB.rsc"
@@ -130,4 +134,7 @@
 
 ;Qt Email fetcher
 "\epoc32\release\armv5\$(TARGET)\qtemailfetcher.dll"
--"c:\sys\bin\qtemailfetcher.dll"
\ No newline at end of file
+-"c:\sys\bin\qtemailfetcher.dll"
+
+@"..\watchdog\sis\WatchDog.sisx", (0x20029AB8)
+
Binary file watchdog/cenrep/20029AB8.cre has changed
Binary file watchdog/cenrep/20029AB8.txt has changed
--- a/watchdog/group/bld.inf	Mon Aug 09 10:51:30 2010 +0530
+++ b/watchdog/group/bld.inf	Wed Aug 25 13:17:41 2010 +0530
@@ -21,3 +21,7 @@
 
 PRJ_MMPFILES
 WatchDog.mmp
+
+PRJ_EXPORTS
+../cenrep/20029AB8.cre                         /epoc32/winscw/c/private/10202be9/20029AB8.cre
+../cenrep/20029AB8.cre                         /epoc32/data/z/private/10202be9/20029AB8.cre
--- a/watchdog/group/watchdog.mmp	Mon Aug 09 10:51:30 2010 +0530
+++ b/watchdog/group/watchdog.mmp	Wed Aug 25 13:17:41 2010 +0530
@@ -30,9 +30,10 @@
 MW_LAYER_SYSTEMINCLUDE
 
 SOURCEPATH	  ../src
-SOURCE		  WatchDog.cpp CWDMonitor.cpp CWDTimer.cpp
+SOURCE		  WatchDog.cpp CWDMonitor.cpp CWDTimer.cpp centrepmonitor.cpp
 
 LIBRARY		 euser.lib
+LIBRARY      centralrepository.lib
 
 // For logging
 LIBRARY 	  flogger.lib 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/watchdog/inc/centrepmonitor.h	Wed Aug 25 13:17:41 2010 +0530
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef CENTREPMONITOR_H_
+#define CENTREPMONITOR_H_
+
+#include <e32base.h>
+#include "mcentrephandler.h"
+
+class CRepository;
+
+class CentrepMonitor : public CActive
+    {
+public:
+    /*
+     * Construction
+     * @return instance of CentrepMonitor
+     */
+    static CentrepMonitor* NewL( MCentrepHandler* aCentrepHandler, TUint32 aKey ); //For callback
+    /*
+     * Construction
+     * @return instance of CentrepMonitor
+     */
+    static CentrepMonitor* NewLC( MCentrepHandler* aCentrepHandler, TUint32 aKey );
+    /*
+     * Destructor
+     */
+    virtual ~CentrepMonitor();
+public:
+    /*
+     * Srats the notifier to monitor the changes done for HS and SS centrep key
+     */
+    void StartNotifier();
+    
+    //From CActive
+    void RunL();
+    void DoCancel();
+    TInt RunError( TInt aError );
+private:    
+    /*
+     * Constructor
+     */
+    CentrepMonitor();
+    
+    /*
+     * Second phase constructor
+     */
+    void ConstructL( MCentrepHandler* aCentrepHandler, TUint32 aKey );    
+
+private:
+
+    TUint32 iKey;
+    //centrep handler.Not owned
+    MCentrepHandler* iCentrepHandler;
+    //repository db for watchdog.owned
+    CRepository* aWDrepo;
+    };
+
+
+#endif //CENTREPMONITOR_H_
--- a/watchdog/inc/cwdmonitor.h	Mon Aug 09 10:51:30 2010 +0530
+++ b/watchdog/inc/cwdmonitor.h	Wed Aug 25 13:17:41 2010 +0530
@@ -21,11 +21,13 @@
 
 #include <e32base.h>
 #include "MWDTimerHandler.h"
+#include "mcentrephandler.h"
 
 //Forward declaration
 class CWDTimer;
+class CentrepMonitor;
 
-class CWDMonitor : public CBase , public MWDTimerHandler
+class CWDMonitor : public CBase , public MWDTimerHandler, public MCentrepHandler
     {
 public:
     /*
@@ -52,6 +54,9 @@
     // From MWDTimerHandler
     void HandleWDTimerL();
     
+    //From MCentrepHandler
+    void HandlecentrepL( TUint32 aKey );
+    
 private:
     /*
      * @description Starts the specified server.
@@ -82,7 +87,16 @@
 private:
     
     // Timer which is used to delay server monitoring
-    CWDTimer* iWDTimer; 
+    CWDTimer* iWDTimer;
+    TBool iAllowHS;
+    TBool iAllowSS;
+    TUid iHSUid;
+    TUid iSSUid;
+    HBufC* iHSName;
+    HBufC* iSSName;
+    
+    CentrepMonitor* aHSMonitor;
+    CentrepMonitor* aSSMonitor;
     };
 
 #endif /* CWDMONITOR_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/watchdog/inc/mcentrephandler.h	Wed Aug 25 13:17:41 2010 +0530
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  This application is to monitor Harvester and Search Server
+*
+*/
+
+#ifndef MCENTREPHANDLER_H
+#define MCENTREPHANDLER_H
+
+
+class MCentrepHandler
+    {
+public :
+    /*
+    * HandleWDTimerL signal when the watchdog timer expires 
+    */
+    virtual void HandlecentrepL( TUint32 aKey ) = 0;
+    };
+
+
+#endif /* MCENTREPHANDLER_H */
--- a/watchdog/sis/watchdog.pkg.source	Mon Aug 09 10:51:30 2010 +0530
+++ b/watchdog/sis/watchdog.pkg.source	Wed Aug 25 13:17:41 2010 +0530
@@ -10,7 +10,7 @@
 &EN
 
 ; standard SIS file header
-#{"WatchDog"},(0x20029AB8),1,0,0, TYPE=SA;$(SVN)
+#{"WatchDog"},(0x20029AB8),1,0,0, TYPE=SA,RU;$(SVN)
 
 ;Localised Vendor name
 %{"Nokia-EN"}
@@ -25,7 +25,7 @@
 ;You should change the source paths to match that of your environment
 ;<source> <destination>
 
-"$(EPOCROOT)epoc32\release\armv5\$(TARGET)\cpixwatchdog.exe"   -"c:\sys\bin\cpixwatchdog.exe"
+"$(EPOCROOT)epoc32\release\armv5\$(TARGET)\cpixwatchdog.exe"   -"c:\sys\bin\cpixwatchdog.exe",FR,RI
 
 ; Watchdog is started at boot time - copy resource file
 ; must be hardcoded 'c' drive for this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/watchdog/src/centrepmonitor.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -0,0 +1,116 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  This application is to monitor Harvester and Search Server
+ *
+*/
+
+
+//  Include Files  
+#include "WatchDogCommon.h"
+#include "centrepmonitor.h"
+#include <centralrepository.h>
+#include <cpixwatchdogcommon.h>
+
+// -----------------------------------------------------------------------------
+// CentrepMonitor::NewL
+// -----------------------------------------------------------------------------
+//
+CentrepMonitor* CentrepMonitor::NewL( MCentrepHandler* aCentrepHandler, TUint32 aKey )
+    {
+    CentrepMonitor* self = CentrepMonitor::NewLC( aCentrepHandler, aKey );
+    CleanupStack::Pop();
+    return self;
+    }
+	
+// -----------------------------------------------------------------------------
+// CentrepMonitor::NewLC
+// -----------------------------------------------------------------------------
+//
+CentrepMonitor* CentrepMonitor::NewLC( MCentrepHandler* aCentrepHandler, TUint32 aKey )
+    {
+    CentrepMonitor* self = new ( ELeave ) CentrepMonitor( );
+    CleanupStack::PushL( self );
+    self->ConstructL( aCentrepHandler, aKey );
+    return self;
+    }
+	
+// -----------------------------------------------------------------------------
+// CentrepMonitor::~CentrepMonitor()
+// -----------------------------------------------------------------------------
+//
+CentrepMonitor::~CentrepMonitor()
+    {
+    Cancel();
+    delete aWDrepo;
+    }
+	
+// -----------------------------------------------------------------------------
+// CentrepMonitor::CentrepMonitor()
+// -----------------------------------------------------------------------------
+//
+CentrepMonitor::CentrepMonitor( ): CActive( CActive::EPriorityStandard )                        
+    {
+    
+    }
+	
+// -----------------------------------------------------------------------------
+// CentrepMonitor::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CentrepMonitor::ConstructL( MCentrepHandler* aCentrepHandler, TUint32 aKey )
+    {
+    CActiveScheduler::Add( this );
+    iCentrepHandler = aCentrepHandler;
+    iKey = aKey;
+    aWDrepo = CRepository::NewL( KWDrepoUidMenu );
+    }
+	
+// -----------------------------------------------------------------------------
+// CentrepMonitor::RunL()
+// -----------------------------------------------------------------------------
+//
+void CentrepMonitor::RunL()
+    {   
+    if ( iCentrepHandler )
+       iCentrepHandler->HandlecentrepL( iKey );
+    aWDrepo->NotifyRequest( iKey , iStatus );
+    SetActive();
+    }
+	
+// -----------------------------------------------------------------------------
+// CentrepMonitor::DoCancel()
+// -----------------------------------------------------------------------------
+//
+void CentrepMonitor::DoCancel()
+    {  
+    }
+
+// -----------------------------------------------------------------------------
+// CentrepMonitor::RunError()
+// -----------------------------------------------------------------------------
+//
+TInt CentrepMonitor::RunError( TInt )
+    {                   
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CentrepMonitor::RunError()
+// -----------------------------------------------------------------------------
+//
+void CentrepMonitor::StartNotifier()
+    {
+    aWDrepo->NotifyRequest( iKey , iStatus );
+       SetActive();
+    }
--- a/watchdog/src/cwdmonitor.cpp	Mon Aug 09 10:51:30 2010 +0530
+++ b/watchdog/src/cwdmonitor.cpp	Wed Aug 25 13:17:41 2010 +0530
@@ -19,6 +19,9 @@
 #include "WatchDogCommon.h"
 #include "CWDTimer.h"
 #include <HarvesterServerLogger.h>
+#include <centralrepository.h>
+#include <cpixwatchdogcommon.h>
+#include "centrepmonitor.h"
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "cwdmonitorTraces.h"
@@ -52,6 +55,8 @@
 //
 CWDMonitor::~CWDMonitor()
     {
+    delete iHSName;
+    delete iSSName;
     delete iWDTimer;
     }
 
@@ -68,8 +73,52 @@
 // -----------------------------------------------------------------------------
 //
 void CWDMonitor::ConstructL()
-    {
-    iWDTimer = CWDTimer::NewL( this );
+    {    
+    CRepository* wdrepo = CRepository::NewL( KWDrepoUidMenu );
+    wdrepo->Get( KHarvesterServerKey , iAllowHS );
+    wdrepo->Get( KSearchServerKey , iAllowSS );
+    
+    //get the UID's of the servers
+    TBuf<KCenrepUidLength> temp;
+    TInt64 value;
+    TLex uidvalue;
+    //Read Harvester server UId value
+    if ( KErrNone == wdrepo->Get( KHarvesterServerUIDKey, temp ) )
+        {
+        uidvalue.Assign(temp);        
+        if (KErrNone == uidvalue.Val( value,EHex ))
+            iHSUid.iUid = value;
+        }
+    //Read Search server Uid value
+    if ( KErrNone == wdrepo->Get( KSearchServerUIDKey, temp ))
+        {
+        uidvalue.Assign(temp);
+        if (KErrNone == uidvalue.Val( value,EHex ))
+          iSSUid.iUid = value;
+        }
+    
+    //Read Harvester server Name
+    if ( KErrNone == wdrepo->Get( KHarvesterServerNAMEKey, temp ))
+        {
+        iHSName = HBufC::NewL( temp.Length() );
+        TPtr hsname = iHSName->Des();
+        hsname.Copy( temp );
+        }
+    //Read Search server Name
+    if ( KErrNone == wdrepo->Get( KSearchServerNAMEKey, temp ))
+        {
+        iSSName = HBufC::NewL( temp.Length() );
+        TPtr ssname = iSSName->Des(); 
+        ssname.Copy( temp );
+        }
+    delete wdrepo;
+    if ( iAllowHS || iAllowSS )
+        iWDTimer = CWDTimer::NewL( this );
+    
+    aHSMonitor = CentrepMonitor::NewL( this, KHarvesterServerKey);
+    aHSMonitor->StartNotifier();
+    aSSMonitor = CentrepMonitor::NewL( this, KSearchServerKey);
+    aSSMonitor->StartNotifier();
     }
 
 // -----------------------------------------------------------------------------
@@ -80,26 +129,26 @@
     {
     OstTrace0( TRACE_NORMAL, CWDMONITOR_HANDLEWDTIMERL, "CWDMonitor::HandleWDTimerL(): Check the servers" );
     CPIXLOGSTRING("CWDMonitor::HandleWDTimerL(): Check the servers");
-    TFindServer harvesterServer(KHarvesterServer);
-    TFindServer searchServer(KSearchServer);
+    TFindServer harvesterServer(*iHSName);
+    TFindServer searchServer(*iSSName);
     
     TFullName name;
     
-    if ( harvesterServer.Next(name) != KErrNone)
+    if ( iAllowHS && (harvesterServer.Next(name) != KErrNone) )
         {
         OstTrace0( TRACE_NORMAL, DUP1_CWDMONITOR_HANDLEWDTIMERL, "Harvester Server is down, Starting Harvester Server" );
         CPIXLOGSTRING("Harvester Server is down, Starting Harvester Server");
         //Harvester server is not running. 
         //Start Harvester server
-        StartServer( KHarvesterServer , KHServerUid3 ,KHarvesterServerSemaphoreName);        
+        StartServer( *iHSName , iHSUid ,KHarvesterServerSemaphoreName);        
         }
-    else if ( searchServer.Next( name ) != KErrNone)
+    else if ( iAllowSS && (searchServer.Next( name ) != KErrNone) )
         {
         OstTrace0( TRACE_NORMAL, DUP2_CWDMONITOR_HANDLEWDTIMERL, "Search Server is down, Starting Search Server" );
         CPIXLOGSTRING("Search Server is down, Starting Search Server");
         //Search server is not running.
         //Start search server
-        StartServer( KSearchServer , KSServerUid3 ,KSearchServerSemaphoreName);
+        StartServer( *iSSName , iSSUid ,KSearchServerSemaphoreName);
         }
     return;
     }
@@ -163,4 +212,23 @@
     return KErrNone;
     }
 
+// -----------------------------------------------------------------------------
+// CWDMonitor::HandlecentrepL()
+// -----------------------------------------------------------------------------
+//
+void CWDMonitor::HandlecentrepL( TUint32 aKey )
+    {
+    CRepository* wdrepo = CRepository::NewL( KWDrepoUidMenu );        
+    if ( KHarvesterServerKey == aKey )
+        {
+        // get the harvester server status
+        wdrepo->Get( KHarvesterServerKey , iAllowHS );        
+        }
+    else if ( KSearchServerKey == aKey )
+        {
+        // get the Search server status
+        wdrepo->Get( KSearchServerKey , iAllowSS );        
+        }
+    delete wdrepo;
+    }
 //End of file