27 #include "CCPixSearch.h" |
27 #include "CCPixSearch.h" |
28 #include "CSearchDocument.h" |
28 #include "CSearchDocument.h" |
29 #include "SearchServerLogger.h" |
29 #include "SearchServerLogger.h" |
30 #include "SearchServer.pan" |
30 #include "SearchServer.pan" |
31 #include "CLogPlayerRecorder.h" |
31 #include "CLogPlayerRecorder.h" |
|
32 #include "OstTraceDefinitions.h" |
|
33 #ifdef OST_TRACE_COMPILER_IN_USE |
|
34 #include "csearchserversubsessionTraces.h" |
|
35 #endif |
|
36 |
32 |
37 |
33 // Contants |
38 // Contants |
34 //_LIT8( KFileBaseAppClass, "root file" ); |
39 //_LIT8( KFileBaseAppClass, "root file" ); |
35 |
40 |
36 CSearchServerSubSession* CSearchServerSubSession::NewLC(CSearchServerSession* aSession) |
41 CSearchServerSubSession* CSearchServerSubSession::NewLC(CSearchServerSession* aSession) |
149 aMessage.Complete(KErrNone); |
156 aMessage.Complete(KErrNone); |
150 } |
157 } |
151 |
158 |
152 void CSearchServerSubSession::SearchL(const RMessage2& aMessage) |
159 void CSearchServerSubSession::SearchL(const RMessage2& aMessage) |
153 { |
160 { |
|
161 OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_SEARCHL_ENTRY ); |
154 PERFORMANCE_LOG_START("CSearchServerSubSession::SearchL"); |
162 PERFORMANCE_LOG_START("CSearchServerSubSession::SearchL"); |
155 |
163 |
156 // Sanity check |
164 // Sanity check |
157 if (!iSearchDb->IsOpen()) |
165 if (!iSearchDb->IsOpen()) |
158 { |
166 { |
159 iSession->PanicClient(aMessage, EDatabaseNotOpen); |
167 iSession->PanicClient(aMessage, EDatabaseNotOpen); |
|
168 OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_SEARCHL_EXIT ); |
160 return; |
169 return; |
161 } |
170 } |
162 |
171 |
163 // buf for the search terms |
172 // buf for the search terms |
164 HBufC* searchTerms = HBufC::NewLC(aMessage.GetDesLength(0)); |
173 HBufC* searchTerms = HBufC::NewLC(aMessage.GetDesLength(0)); |
179 aMessage.Complete(KErrNone); |
188 aMessage.Complete(KErrNone); |
180 } |
189 } |
181 |
190 |
182 // Cleanup search terms |
191 // Cleanup search terms |
183 CleanupStack::PopAndDestroy(searchTerms); |
192 CleanupStack::PopAndDestroy(searchTerms); |
|
193 OstTraceFunctionExit0( DUP1_CSEARCHSERVERSUBSESSION_SEARCHL_EXIT ); |
184 } |
194 } |
185 |
195 |
186 void CSearchServerSubSession::SearchCompleteL(const RMessage2& aMessage) |
196 void CSearchServerSubSession::SearchCompleteL(const RMessage2& aMessage) |
187 { |
197 { |
|
198 OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_SEARCHCOMPLETEL_ENTRY ); |
188 PERFORMANCE_LOG_START("CSearchServerSubSession::SearchCompleteL"); |
199 PERFORMANCE_LOG_START("CSearchServerSubSession::SearchCompleteL"); |
189 |
200 |
190 // Complete search |
201 // Complete search |
191 const TInt resultCount = iSearchDb->SearchCompleteL(); |
202 const TInt resultCount = iSearchDb->SearchCompleteL(); |
192 |
203 |
193 // Return the size of the search results in first parameter |
204 // Return the size of the search results in first parameter |
194 TPckgBuf<TInt> resultCountPackage(resultCount); |
205 TPckgBuf<TInt> resultCountPackage(resultCount); |
195 aMessage.WriteL(1, resultCountPackage); |
206 aMessage.WriteL(1, resultCountPackage); |
196 |
207 |
|
208 OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_SEARCHCOMPLETEL_EXIT ); |
197 } |
209 } |
198 |
210 |
199 // CSearchServerSession::GetDocumentL(). |
211 // CSearchServerSession::GetDocumentL(). |
200 // Client gets the next documents (result) when SearchL has completed |
212 // Client gets the next documents (result) when SearchL has completed |
201 void CSearchServerSubSession::GetDocumentL(const RMessage2& aMessage) |
213 void CSearchServerSubSession::GetDocumentL(const RMessage2& aMessage) |
202 { |
214 { |
|
215 OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_GETDOCUMENTL_ENTRY ); |
203 PERFORMANCE_LOG_START("CSearchServerSubSession::GetDocumentL"); |
216 PERFORMANCE_LOG_START("CSearchServerSubSession::GetDocumentL"); |
204 |
217 |
205 // Sanity check |
218 // Sanity check |
206 if (!iSearchDb->IsOpen()) |
219 if (!iSearchDb->IsOpen()) |
207 { |
220 { |
208 iSession->PanicClient(aMessage, EDatabaseNotOpen); |
221 iSession->PanicClient(aMessage, EDatabaseNotOpen); |
|
222 OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_GETDOCUMENTL_EXIT ); |
209 return; |
223 return; |
210 } |
224 } |
211 |
225 |
212 // buf for the search terms |
226 // buf for the search terms |
213 TInt index = aMessage.Int0(); |
227 TInt index = aMessage.Int0(); |
214 |
228 |
215 delete iNextDocument; |
229 delete iNextDocument; |
216 iNextDocument = NULL; |
230 iNextDocument = NULL; |
217 LOG_PLAYER_RECORD( CLogPlayerRecorder::LogGetDocumentL( reinterpret_cast<TUint>( this ), index ) ); |
231 LOG_PLAYER_RECORD( CLogPlayerRecorder::LogGetDocumentL( reinterpret_cast<TUint>( this ), index ) ); |
218 iSearchDb->GetDocumentL(index, this, aMessage); |
232 iSearchDb->GetDocumentL(index, this, aMessage); |
|
233 OstTraceFunctionExit0( DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTL_EXIT ); |
219 } |
234 } |
220 |
235 |
221 void CSearchServerSubSession::GetDocumentCompleteL(const RMessage2& aMessage) |
236 void CSearchServerSubSession::GetDocumentCompleteL(const RMessage2& aMessage) |
222 { |
237 { |
|
238 OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_ENTRY ); |
223 PERFORMANCE_LOG_START("CSearchServerSubSession::GetDocumentCompleteL"); |
239 PERFORMANCE_LOG_START("CSearchServerSubSession::GetDocumentCompleteL"); |
224 |
240 |
225 iNextDocument = iSearchDb->GetDocumentCompleteL(); |
241 iNextDocument = iSearchDb->GetDocumentCompleteL(); |
226 TPckgBuf<TInt> documentSizePackage(iNextDocument ? iNextDocument->Size() : 0); |
242 TPckgBuf<TInt> documentSizePackage(iNextDocument ? iNextDocument->Size() : 0); |
227 aMessage.WriteL(1, documentSizePackage); |
243 aMessage.WriteL(1, documentSizePackage); |
|
244 OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_EXIT ); |
228 } |
245 } |
229 |
246 |
230 // CSearchServerSession::GetDocumentObjectL() |
247 // CSearchServerSession::GetDocumentObjectL() |
231 // Client gets the object after GetDocumentL() has completed |
248 // Client gets the object after GetDocumentL() has completed |
232 void CSearchServerSubSession::GetDocumentObjectL(const RMessage2& aMessage) |
249 void CSearchServerSubSession::GetDocumentObjectL(const RMessage2& aMessage) |
233 { |
250 { |
|
251 OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_ENTRY ); |
234 PERFORMANCE_LOG_START("CSearchServerSubSession::GetDocumentObjectL"); |
252 PERFORMANCE_LOG_START("CSearchServerSubSession::GetDocumentObjectL"); |
235 |
253 |
236 // Sanity check |
254 // Sanity check |
237 if (!iSearchDb->IsOpen()) |
255 if (!iSearchDb->IsOpen()) |
238 { |
256 { |
239 iSession->PanicClient(aMessage, EDatabaseNotOpen); |
257 iSession->PanicClient(aMessage, EDatabaseNotOpen); |
|
258 OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT ); |
240 return; |
259 return; |
241 } |
260 } |
242 |
261 |
243 if (iNextDocument) |
262 if (iNextDocument) |
244 { |
263 { |
302 if ( iIndexDb->BaseAppClass().Find( KFileBaseAppClass ) == KErrNotFound ) |
322 if ( iIndexDb->BaseAppClass().Find( KFileBaseAppClass ) == KErrNotFound ) |
303 { |
323 { |
304 CLogPlayerRecorder::LogAddL( reinterpret_cast<TUint>(this), *document ); |
324 CLogPlayerRecorder::LogAddL( reinterpret_cast<TUint>(this), *document ); |
305 } |
325 } |
306 ); |
326 ); |
|
327 //check if excerpt is more then maximum allowed |
|
328 LimitExcerptToMaxLengthL(document); |
307 iIndexDb->AddL(*document, this, aMessage); |
329 iIndexDb->AddL(*document, this, aMessage); |
308 |
330 |
309 CleanupStack::PopAndDestroy(document); |
331 CleanupStack::PopAndDestroy(document); |
310 CleanupStack::PopAndDestroy(serializedDocument); |
332 CleanupStack::PopAndDestroy(serializedDocument); |
311 } |
333 } |
|
334 |
|
335 void CSearchServerSubSession::LimitExcerptToMaxLengthL(CSearchDocument* aSearchDocument) |
|
336 { |
|
337 //check if excerpt is more then maximum allowed |
|
338 if(aSearchDocument->Excerpt().Length() > MAX_EXCERPT_LENGTH) |
|
339 { |
|
340 OstTraceExt1( TRACE_NORMAL, CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL, "CSearchServerSubSession::LimitExcerptToMaxLengthL;docuid=%S", (aSearchDocument->Id()) ); |
|
341 CPIXLOGSTRING2("CSearchServerSubSession::AddL docuid=%S", &(aSearchDocument->Id())); |
|
342 OstTrace1( TRACE_NORMAL, DUP1_CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL, "CSearchServerSubSession::LimitExcerptToMaxLengthL;Excerpt Length=%d", aSearchDocument->Excerpt().Length() ); |
|
343 CPIXLOGSTRING2("CSearchServerSubSession::AddL Excerpt Length =%d", aSearchDocument->Excerpt().Length()); |
|
344 const TDesC& excerpt = aSearchDocument->Excerpt(); |
|
345 HBufC* bufExcerpt = HBufC::NewLC(MAX_EXCERPT_LENGTH); |
|
346 TPtr ptrExcerpt = bufExcerpt->Des(); |
|
347 ptrExcerpt.Append(excerpt.Ptr(),MAX_EXCERPT_LENGTH - 1); |
|
348 ptrExcerpt.Append(KNullDesC); //Append NULL |
|
349 aSearchDocument->AddExcerptL(*bufExcerpt); |
|
350 CleanupStack::PopAndDestroy(bufExcerpt); |
|
351 } |
|
352 } |
312 |
353 |
313 void CSearchServerSubSession::AddCompleteL(const RMessage2& /*aMessage*/) |
354 void CSearchServerSubSession::AddCompleteL(const RMessage2& /*aMessage*/) |
314 { |
355 { |
315 iIndexDb->AddCompleteL(); |
356 iIndexDb->AddCompleteL(); |
316 } |
357 } |