70 CPIXLOGSTRING("Deleting search server subsession"); |
70 CPIXLOGSTRING("Deleting search server subsession"); |
71 |
71 |
72 delete iIndexDb; |
72 delete iIndexDb; |
73 delete iSearchDb; |
73 delete iSearchDb; |
74 delete iNextDocument; |
74 delete iNextDocument; |
|
75 idocList.ResetAndDestroy(); |
|
76 idocList.Close(); |
75 } |
77 } |
76 |
78 |
77 void CSearchServerSubSession::ConstructL() |
79 void CSearchServerSubSession::ConstructL() |
78 { |
80 { |
|
81 count = 0; |
79 iIndexDb = CCPixIdxDb::NewL(); |
82 iIndexDb = CCPixIdxDb::NewL(); |
80 iSearchDb = CCPixSearch::NewL(); |
83 iSearchDb = CCPixSearch::NewL(); |
81 } |
84 } |
82 |
85 |
83 // CSearchServerSession::CancelAll() |
86 // CSearchServerSession::CancelAll() |
257 LOG_PLAYER_RECORD( CLogPlayerRecorder::LogGetDocumentL( reinterpret_cast<TUint>( this ), index ) ); |
260 LOG_PLAYER_RECORD( CLogPlayerRecorder::LogGetDocumentL( reinterpret_cast<TUint>( this ), index ) ); |
258 iSearchDb->GetDocumentL(index, this, aMessage); |
261 iSearchDb->GetDocumentL(index, this, aMessage); |
259 OstTraceFunctionExit0( DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTL_EXIT ); |
262 OstTraceFunctionExit0( DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTL_EXIT ); |
260 } |
263 } |
261 |
264 |
|
265 void CSearchServerSubSession::GetBatchDocumentL(const RMessage2& aMessage) |
|
266 { |
|
267 PERFORMANCE_LOG_START("CSearchServerSubSession::GetBatchDocumentL"); |
|
268 |
|
269 // Sanity check |
|
270 if (!iSearchDb->IsOpen()) |
|
271 { |
|
272 iSession->PanicClient(aMessage, EDatabaseNotOpen); |
|
273 return; |
|
274 } |
|
275 |
|
276 // buf for the search terms |
|
277 TInt index = aMessage.Int0(); |
|
278 count = aMessage.Int1(); |
|
279 |
|
280 for (int i =0; i < idocList.Count(); i++) |
|
281 { |
|
282 delete idocList[i]; |
|
283 idocList[i] = NULL; |
|
284 } |
|
285 idocList.Reset(); |
|
286 LOG_PLAYER_RECORD( CLogPlayerRecorder::LogGetDocumentL( reinterpret_cast<TUint>( this ), index ) ); |
|
287 |
|
288 iSearchDb->GetBatchDocumentL(index, this, aMessage, count); |
|
289 } |
|
290 |
262 void CSearchServerSubSession::GetDocumentCompleteL(const RMessage2& aMessage) |
291 void CSearchServerSubSession::GetDocumentCompleteL(const RMessage2& aMessage) |
263 { |
292 { |
264 OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_ENTRY ); |
293 OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_ENTRY ); |
265 PERFORMANCE_LOG_START("CSearchServerSubSession::GetDocumentCompleteL"); |
294 PERFORMANCE_LOG_START("CSearchServerSubSession::GetDocumentCompleteL"); |
266 |
295 |
268 TPckgBuf<TInt> documentSizePackage(iNextDocument ? iNextDocument->Size() : 0); |
297 TPckgBuf<TInt> documentSizePackage(iNextDocument ? iNextDocument->Size() : 0); |
269 aMessage.WriteL(1, documentSizePackage); |
298 aMessage.WriteL(1, documentSizePackage); |
270 OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_EXIT ); |
299 OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_EXIT ); |
271 } |
300 } |
272 |
301 |
|
302 void CSearchServerSubSession::GetBatchDocumentCompleteL(const RMessage2& aMessage) |
|
303 { |
|
304 PERFORMANCE_LOG_START("CSearchServerSubSession::GetBatchDocumentCompleteL"); |
|
305 idocList = iSearchDb->GetBatchDocumentCompleteL(); |
|
306 const TPtrC8 ptr((const TUint8*)&(iSearchDb->docSizeArray[0]), sizeof(TInt) * iSearchDb->docSizeArray.Count()); |
|
307 aMessage.WriteL(2, ptr); |
|
308 } |
|
309 |
273 // CSearchServerSession::GetDocumentObjectL() |
310 // CSearchServerSession::GetDocumentObjectL() |
274 // Client gets the object after GetDocumentL() has completed |
311 // Client gets the object after GetDocumentL() has completed |
275 void CSearchServerSubSession::GetDocumentObjectL(const RMessage2& aMessage) |
312 void CSearchServerSubSession::GetDocumentObjectL(const RMessage2& aMessage) |
276 { |
313 { |
277 OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_ENTRY ); |
314 OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_ENTRY ); |
316 } |
353 } |
317 |
354 |
318 // Complete the request |
355 // Complete the request |
319 aMessage.Complete(KErrNone); |
356 aMessage.Complete(KErrNone); |
320 OstTraceFunctionExit0( DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT ); |
357 OstTraceFunctionExit0( DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT ); |
|
358 } |
|
359 |
|
360 // CSearchServerSession::GetBatchDocumentObjectL() |
|
361 // Client gets the object after GetBatchDocumentL() has completed |
|
362 void CSearchServerSubSession::GetBatchDocumentObjectL(const RMessage2& aMessage) |
|
363 { |
|
364 PERFORMANCE_LOG_START("CSearchServerSubSession::GetBatchDocumentObjectL"); |
|
365 |
|
366 // Sanity check |
|
367 if ( !iSearchDb || !iSearchDb->IsOpen() ) |
|
368 { |
|
369 iSession->PanicClient(aMessage, EDatabaseNotOpen); |
|
370 return; |
|
371 } |
|
372 TInt totalSize = 0; |
|
373 for ( TInt i= 0; i < iSearchDb->docSizeArray.Count(); i++) |
|
374 totalSize += iSearchDb->docSizeArray[i]; |
|
375 |
|
376 // Create long enough descriptor for serialized hits |
|
377 HBufC8* buf = HBufC8::NewLC(totalSize +1); |
|
378 TPtr8 ptr = buf->Des(); |
|
379 // Initialize a new stream |
|
380 RDesWriteStream stream; |
|
381 stream.Open(ptr); |
|
382 stream.PushL(); |
|
383 |
|
384 for(TInt i= 0; i < idocList.Count(); i++) |
|
385 { |
|
386 if ( idocList[i] ) |
|
387 { |
|
388 // Externalize hits to the stream// |
|
389 idocList[i]->ExternalizeL(stream); |
|
390 } |
|
391 } |
|
392 // Commit and destroy the stream |
|
393 stream.CommitL(); |
|
394 TInt len2 = ptr.Length(); |
|
395 CleanupStack::PopAndDestroy(&stream); |
|
396 |
|
397 // write the serialized hits in to the message |
|
398 aMessage.WriteL(0, ptr); |
|
399 |
|
400 // Delete descriptor |
|
401 CleanupStack::PopAndDestroy(buf); |
|
402 |
|
403 // Complete the request |
|
404 aMessage.Complete(KErrNone); |
321 } |
405 } |
322 |
406 |
323 void CSearchServerSubSession::AddL(const RMessage2& aMessage) |
407 void CSearchServerSubSession::AddL(const RMessage2& aMessage) |
324 { |
408 { |
325 // Sanity check |
409 // Sanity check |
358 CleanupStack::PopAndDestroy(serializedDocument); |
442 CleanupStack::PopAndDestroy(serializedDocument); |
359 } |
443 } |
360 |
444 |
361 void CSearchServerSubSession::LimitExcerptToMaxLengthL(CSearchDocument* aSearchDocument) |
445 void CSearchServerSubSession::LimitExcerptToMaxLengthL(CSearchDocument* aSearchDocument) |
362 { |
446 { |
|
447 //This is commented because HIGHLIGHTER uses full expcerpt field, |
|
448 //no need to limit excerpt |
363 //check if excerpt is more then maximum allowed |
449 //check if excerpt is more then maximum allowed |
|
450 #ifdef USE_HIGHLIGHTER |
|
451 #else |
364 if(aSearchDocument->Excerpt().Length() > MAX_EXCERPT_LENGTH) |
452 if(aSearchDocument->Excerpt().Length() > MAX_EXCERPT_LENGTH) |
365 { |
453 { |
366 OstTraceExt1( TRACE_NORMAL, CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL, "CSearchServerSubSession::LimitExcerptToMaxLengthL;docuid=%S", (aSearchDocument->Id()) ); |
454 OstTraceExt1( TRACE_NORMAL, CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL, "CSearchServerSubSession::LimitExcerptToMaxLengthL;docuid=%S", (aSearchDocument->Id()) ); |
367 CPIXLOGSTRING2("CSearchServerSubSession::AddL docuid=%S", &(aSearchDocument->Id())); |
455 CPIXLOGSTRING2("CSearchServerSubSession::AddL docuid=%S", &(aSearchDocument->Id())); |
368 OstTrace1( TRACE_NORMAL, DUP1_CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL, "CSearchServerSubSession::LimitExcerptToMaxLengthL;Excerpt Length=%d", aSearchDocument->Excerpt().Length() ); |
456 OstTrace1( TRACE_NORMAL, DUP1_CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL, "CSearchServerSubSession::LimitExcerptToMaxLengthL;Excerpt Length=%d", aSearchDocument->Excerpt().Length() ); |
373 ptrExcerpt.Append(excerpt.Ptr(),MAX_EXCERPT_LENGTH - 1); |
461 ptrExcerpt.Append(excerpt.Ptr(),MAX_EXCERPT_LENGTH - 1); |
374 ptrExcerpt.Append(KNullDesC); //Append NULL |
462 ptrExcerpt.Append(KNullDesC); //Append NULL |
375 aSearchDocument->AddExcerptL(*bufExcerpt); |
463 aSearchDocument->AddExcerptL(*bufExcerpt); |
376 CleanupStack::PopAndDestroy(bufExcerpt); |
464 CleanupStack::PopAndDestroy(bufExcerpt); |
377 } |
465 } |
|
466 #endif |
378 } |
467 } |
379 |
468 |
380 void CSearchServerSubSession::AddCompleteL(const RMessage2& /*aMessage*/) |
469 void CSearchServerSubSession::AddCompleteL(const RMessage2& /*aMessage*/) |
381 { |
470 { |
382 iIndexDb->AddCompleteL(); |
471 iIndexDb->AddCompleteL(); |
496 case ECPixTaskTypeGetDocument: |
585 case ECPixTaskTypeGetDocument: |
497 { |
586 { |
498 TRAP(aError, GetDocumentCompleteL(aMessage)); |
587 TRAP(aError, GetDocumentCompleteL(aMessage)); |
499 break; |
588 break; |
500 } |
589 } |
|
590 case ECPixTaskTypeGetBatchDocument: |
|
591 { |
|
592 TRAP(aError, GetBatchDocumentCompleteL(aMessage)); |
|
593 break; |
|
594 } |
501 case ECPixTaskTypeAdd: |
595 case ECPixTaskTypeAdd: |
502 { |
596 { |
503 TRAP(aError, AddCompleteL(aMessage)); |
597 TRAP(aError, AddCompleteL(aMessage)); |
504 break; |
598 break; |
505 } |
599 } |