51 CVIMPSTEngineCchHandler& aCchHandler, |
51 CVIMPSTEngineCchHandler& aCchHandler, |
52 CVIMPSTEngineServiceTableFetcher& aTableFetcher, |
52 CVIMPSTEngineServiceTableFetcher& aTableFetcher, |
53 MVIMPSTEngineServiceConnectionEventObserver& aObserver |
53 MVIMPSTEngineServiceConnectionEventObserver& aObserver |
54 ) |
54 ) |
55 { |
55 { |
56 TRACE( T_LIT("CVIMPSTEngineIMSubService::NewL start")); |
56 TRACER_AUTO; |
57 TRACE( T_LIT("NewL() ServiceId: %d"), aServiceId ); |
57 TRACE( "ServiceId: %d", aServiceId ); |
58 |
58 |
59 CVIMPSTEngineIMSubService* self = CVIMPSTEngineIMSubService::NewLC( |
59 CVIMPSTEngineIMSubService* self = CVIMPSTEngineIMSubService::NewLC( |
60 aServiceId, |
60 aServiceId, |
61 aCchHandler, |
61 aCchHandler, |
62 aTableFetcher, |
62 aTableFetcher, |
63 aObserver ); |
63 aObserver ); |
64 CleanupStack::Pop( self ); |
64 CleanupStack::Pop( self ); |
65 |
65 |
66 TRACE( T_LIT("CVIMPSTEngineIMSubService::NewL end")); |
|
67 return self; |
66 return self; |
68 } |
67 } |
69 |
68 |
70 |
69 |
71 // --------------------------------------------------------- |
70 // --------------------------------------------------------- |
78 CVIMPSTEngineCchHandler& aCchHandler, |
77 CVIMPSTEngineCchHandler& aCchHandler, |
79 CVIMPSTEngineServiceTableFetcher& aTableFetcher, |
78 CVIMPSTEngineServiceTableFetcher& aTableFetcher, |
80 MVIMPSTEngineServiceConnectionEventObserver& aObserver |
79 MVIMPSTEngineServiceConnectionEventObserver& aObserver |
81 ) |
80 ) |
82 { |
81 { |
83 |
82 TRACER_AUTO; |
84 TRACE( T_LIT("CVIMPSTEngineIMSubService::NewLC start")); |
83 TRACE( "ServiceId: %d", aServiceId ); |
85 TRACE( T_LIT("NewLC() ServiceId: %d"), aServiceId ); |
|
86 |
84 |
87 CVIMPSTEngineIMSubService* self = new (ELeave) CVIMPSTEngineIMSubService(aServiceId, |
85 CVIMPSTEngineIMSubService* self = new (ELeave) CVIMPSTEngineIMSubService(aServiceId, |
88 aCchHandler, aTableFetcher, |
86 aCchHandler, aTableFetcher, |
89 aObserver ); |
87 aObserver ); |
90 CleanupStack::PushL( self ); |
88 CleanupStack::PushL( self ); |
91 self->ConstructL(); |
89 self->ConstructL(); |
92 |
90 |
93 TRACE( T_LIT("CVIMPSTEngineIMSubService::NewLC end")); |
|
94 return self; |
91 return self; |
95 } |
92 } |
96 |
93 |
97 // --------------------------------------------------------- |
94 // --------------------------------------------------------- |
98 // CVIMPSTEngineIMSubService::~CVIMPSTEngineIMSubService |
95 // CVIMPSTEngineIMSubService::~CVIMPSTEngineIMSubService |
99 // |
96 // |
100 // --------------------------------------------------------- |
97 // --------------------------------------------------------- |
101 |
98 |
102 CVIMPSTEngineIMSubService::~CVIMPSTEngineIMSubService() |
99 CVIMPSTEngineIMSubService::~CVIMPSTEngineIMSubService() |
103 { |
100 { |
104 TRACE( T_LIT("CVIMPSTEngineIMSubService::~CVIMPSTEngineIMSubService start")); |
101 TRACER_AUTO; |
105 |
102 |
106 iChatObserver.Reset(); |
103 iChatObserver.Reset(); |
107 iChatObserver.Close(); |
104 iChatObserver.Close(); |
108 |
105 |
109 iCchHandler.UnRegisterCchObserver(ECCHIMSub); |
106 iCchHandler.UnRegisterCchObserver(ECCHIMSub); |
110 |
107 |
111 ReleaseIMCacheAccessor(); |
108 ReleaseIMCacheAccessor(); |
112 |
109 |
113 TRACE( T_LIT("CVIMPSTEngineIMSubService::~CVIMPSTEngineIMSubService end")); |
|
114 } |
110 } |
115 |
111 |
116 |
112 |
117 // --------------------------------------------------------- |
113 // --------------------------------------------------------- |
118 // CVIMPSTEngineIMSubService::ConstructL |
114 // CVIMPSTEngineIMSubService::ConstructL |
120 // --------------------------------------------------------- |
116 // --------------------------------------------------------- |
121 |
117 |
122 void CVIMPSTEngineIMSubService::ConstructL() |
118 void CVIMPSTEngineIMSubService::ConstructL() |
123 { |
119 { |
124 |
120 |
125 TRACE( T_LIT("CVIMPSTEngineIMSubService::ConstructL start")); |
121 TRACER_AUTO; |
126 TCCHSubserviceState serviceState = ECCHUninitialized; |
122 TCCHSubserviceState serviceState = ECCHUninitialized; |
127 TInt error = iCchHandler.GetServiceState( |
123 TInt error = iCchHandler.GetServiceState( |
128 iServiceId, ECCHIMSub, serviceState ); |
124 iServiceId, ECCHIMSub, serviceState ); |
129 |
125 |
130 iServiceState = ResolveServiceStateL(serviceState, error); |
126 iServiceState = ResolveServiceStateL(serviceState, error); |
131 |
127 |
132 iCchHandler.RegisterCchObserverL(this,ECCHIMSub); |
128 iCchHandler.RegisterCchObserverL(this,ECCHIMSub); |
133 |
129 |
134 TRACE( T_LIT("ConstructL() ResolveServiceStateL returned ServiceState: %d"), |
130 TRACE( "ResolveServiceStateL returned ServiceState: %d", iServiceState ); |
135 iServiceState ); |
|
136 |
131 |
137 TRACE( T_LIT("CVIMPSTEngineIMSubService::ConstructL end")); |
|
138 |
132 |
139 } |
133 } |
140 |
134 |
141 |
135 |
142 // --------------------------------------------------------- |
136 // --------------------------------------------------------- |
165 // |
159 // |
166 // --------------------------------------------------------- |
160 // --------------------------------------------------------- |
167 |
161 |
168 void CVIMPSTEngineIMSubService::RegisterChatObserver(MVIMPSTEngineIMSubServiceEventObserver* aObserver) |
162 void CVIMPSTEngineIMSubService::RegisterChatObserver(MVIMPSTEngineIMSubServiceEventObserver* aObserver) |
169 { |
163 { |
170 TRACE( T_LIT("CVIMPSTEngineIMSubService::RegisterChatObserver start")); |
164 TRACER_AUTO; |
171 if (aObserver) |
165 if (aObserver) |
172 { |
166 { |
173 TInt index = iChatObserver.Find(aObserver); |
167 TInt index = iChatObserver.Find(aObserver); |
174 if( index == KErrNotFound ) |
168 if( index == KErrNotFound ) |
175 { |
169 { |
176 iChatObserver.Append( aObserver ); |
170 iChatObserver.Append( aObserver ); |
177 } |
171 } |
178 } |
172 } |
179 TRACE( T_LIT("CVIMPSTEngineIMSubService::RegisterChatObserver end")); |
|
180 |
173 |
181 } |
174 } |
182 |
175 |
183 // --------------------------------------------------------- |
176 // --------------------------------------------------------- |
184 // CVIMPSTEngineIMSubService::UnRegisterChatObserver |
177 // CVIMPSTEngineIMSubService::UnRegisterChatObserver |
185 // |
178 // |
186 // --------------------------------------------------------- |
179 // --------------------------------------------------------- |
187 |
180 |
188 void CVIMPSTEngineIMSubService::UnRegisterChatObserver(MVIMPSTEngineIMSubServiceEventObserver* aObserver) |
181 void CVIMPSTEngineIMSubService::UnRegisterChatObserver(MVIMPSTEngineIMSubServiceEventObserver* aObserver) |
189 { |
182 { |
190 TRACE( T_LIT("CVIMPSTEngineIMSubService::UnRegisterChatObserver start")); |
183 TRACER_AUTO; |
191 |
184 |
192 if (aObserver) |
185 if (aObserver) |
193 { |
186 { |
194 |
187 |
195 TInt index = iChatObserver.Find(aObserver); |
188 TInt index = iChatObserver.Find(aObserver); |
200 iChatObserver.Compress(); |
193 iChatObserver.Compress(); |
201 } |
194 } |
202 |
195 |
203 |
196 |
204 } |
197 } |
205 TRACE( T_LIT("CVIMPSTEngineIMSubService::UnRegisterChatObserver end")); |
|
206 |
198 |
207 } |
199 } |
208 //----------------------------------------------------------------------------- |
200 //----------------------------------------------------------------------------- |
209 //----------------------------------------------------------------------------- |
201 //----------------------------------------------------------------------------- |
210 // CVIMPSTEngineIMSubService::HandleIMCacheEventL |
202 // CVIMPSTEngineIMSubService::HandleIMCacheEventL |
211 // ( Other items commented in header ) |
203 // ( Other items commented in header ) |
212 //----------------------------------------------------------------------------- |
204 //----------------------------------------------------------------------------- |
213 |
205 |
214 void CVIMPSTEngineIMSubService::HandleIMCacheEventL(TIMCacheEventType aEventType, TAny* aChatMessage ) |
206 void CVIMPSTEngineIMSubService::HandleIMCacheEventL(TIMCacheEventType aEventType, TAny* aChatMessage ) |
215 { |
207 { |
216 TRACE( T_LIT("CVIMPSTEngineIMSubService::HandleIMCacheEventL start")); |
208 TRACER_AUTO; |
217 TRACE( T_LIT("HandleIMCacheEventL() TIMCacheEventType: %d"), aEventType ); |
209 TRACE( "TIMCacheEventType: %d", aEventType ); |
218 |
210 |
219 switch( aEventType ) |
211 switch( aEventType ) |
220 { |
212 { |
221 case EIMCacheUnreadMessage : |
213 case EIMCacheUnreadMessage : |
222 { |
214 { |
227 SIMCacheMessageData* chatData = static_cast<SIMCacheMessageData*>( aChatMessage ) ; |
219 SIMCacheMessageData* chatData = static_cast<SIMCacheMessageData*>( aChatMessage ) ; |
228 // check that buddy id exists |
220 // check that buddy id exists |
229 if ( chatData->iBuddyId ) |
221 if ( chatData->iBuddyId ) |
230 { |
222 { |
231 TPtrC buddyId = chatData->iBuddyId->Des(); |
223 TPtrC buddyId = chatData->iBuddyId->Des(); |
232 TRACE( T_LIT("HandleIMCacheEventL() EIMCacheUnreadMessage for %S"), |
224 TRACE( "EIMCacheUnreadMessage for %S", &buddyId ); |
233 &buddyId ); |
|
234 |
|
235 NotifyObserversL(TVIMPSTEnums::EIMUnreadMessage,buddyId); |
225 NotifyObserversL(TVIMPSTEnums::EIMUnreadMessage,buddyId); |
236 } |
226 } |
237 break; |
227 break; |
238 } |
228 } |
239 case EIMCacheUnreadChange : |
229 case EIMCacheUnreadChange : |
240 { |
230 { |
241 TRACE( T_LIT("HandleIMCacheEventL() EIMCacheUnreadChange") ); |
231 TRACE( "EIMCacheUnreadChange"); |
242 if (!aChatMessage) |
232 if (!aChatMessage) |
243 { |
233 { |
244 return; |
234 return; |
245 } |
235 } |
246 SIMCacheChatItem* chatItem = static_cast<SIMCacheChatItem*>( aChatMessage ) ; |
236 SIMCacheChatItem* chatItem = static_cast<SIMCacheChatItem*>( aChatMessage ) ; |
247 if( iServiceId != chatItem->iServiceId ) |
237 if( iServiceId != chatItem->iServiceId ) |
248 { |
238 { |
249 return; |
239 return; |
250 } |
240 } |
251 TPtrC buddyId = chatItem->iBuddyId->Des(); |
241 TPtrC buddyId = chatItem->iBuddyId->Des(); |
252 TRACE( T_LIT("HandleIMCacheEventL() EIMCacheChatClosed for %S"), |
242 TRACE( "EIMCacheChatClosed for %S", &buddyId ); |
253 &buddyId ); |
|
254 NotifyObserversL(TVIMPSTEnums::EIMUnreadChange, buddyId ); // ETrue for Closed conversation |
243 NotifyObserversL(TVIMPSTEnums::EIMUnreadChange, buddyId ); // ETrue for Closed conversation |
255 break; |
244 break; |
256 } |
245 } |
257 case EIMCacheChatStarted : |
246 case EIMCacheChatStarted : |
258 { |
247 { |
302 { |
289 { |
303 break; |
290 break; |
304 } |
291 } |
305 } |
292 } |
306 |
293 |
307 TRACE( T_LIT("CVIMPSTEngineIMSubService::HandleIMCacheEventL end")); |
|
308 |
294 |
309 } |
295 } |
310 |
296 |
311 //----------------------------------------------------------------------------- |
297 //----------------------------------------------------------------------------- |
312 // CVIMPSTEngineIMSubService::GetUnreadCountL |
298 // CVIMPSTEngineIMSubService::GetUnreadCountL |
313 // ( Other items commented in header ) |
299 // ( Other items commented in header ) |
314 //----------------------------------------------------------------------------- |
300 //----------------------------------------------------------------------------- |
315 TInt CVIMPSTEngineIMSubService::GetUnreadCountL(const TDesC& aBuddyId ) |
301 TInt CVIMPSTEngineIMSubService::GetUnreadCountL(const TDesC& aBuddyId ) |
316 { |
302 { |
317 TRACE( T_LIT("CVIMPSTEngineIMSubService::GetUnreadCountL start")); |
303 TRACER_AUTO; |
318 TRACE( T_LIT("GetUnreadCountL() ServiceId: %d BuddyId: %S"), |
304 TRACE( " ServiceId: %d BuddyId: %S", iServiceId, &aBuddyId ); |
319 iServiceId, &aBuddyId ); |
|
320 |
305 |
321 TInt count = 0; |
306 TInt count = 0; |
322 if( iIMCacheAccessor ) |
307 if( iIMCacheAccessor ) |
323 { |
308 { |
324 count = iIMCacheAccessor->GetUnreadMessageCountL(aBuddyId); |
309 count = iIMCacheAccessor->GetUnreadMessageCountL(aBuddyId); |
325 TRACE( T_LIT("GetUnreadCountL() iIMCacheAccessor returns with %d"), count ); |
310 TRACE( "iIMCacheAccessor returns with %d", count ); |
326 } |
311 } |
327 |
312 |
328 TRACE( T_LIT("CVIMPSTEngineIMSubService::GetUnreadCountL end")); |
|
329 return count; |
313 return count; |
330 } |
314 } |
331 |
315 |
332 |
316 |
333 // --------------------------------------------------------- |
317 // --------------------------------------------------------- |
334 // CVIMPSTEngineIMSubService::SubServiceState |
318 // CVIMPSTEngineIMSubService::SubServiceState |
335 // --------------------------------------------------------------------------- |
319 // --------------------------------------------------------------------------- |
336 // |
320 // |
337 TVIMPSTEnums::TVIMPSTRegistrationState CVIMPSTEngineIMSubService::SubServiceState() const |
321 TVIMPSTEnums::TVIMPSTRegistrationState CVIMPSTEngineIMSubService::SubServiceState() const |
338 { |
322 { |
339 TRACE( T_LIT("SubServiceState() ServiceId: %d ServiceState: %d"), |
323 TRACER_AUTO; |
340 iServiceId, iServiceState ); |
324 TRACE( "ServiceId: %d ServiceState: %d",iServiceId, iServiceState ); |
341 return iServiceState; |
325 return iServiceState; |
342 } |
326 } |
343 |
327 |
344 |
328 |
345 |
329 |
347 // CVIMPSTEngineIMSubService::IsConversationExistL |
331 // CVIMPSTEngineIMSubService::IsConversationExistL |
348 // ( Other items commented in header ) |
332 // ( Other items commented in header ) |
349 //----------------------------------------------------------------------------- |
333 //----------------------------------------------------------------------------- |
350 TBool CVIMPSTEngineIMSubService::IsConversationExistL(const TDesC& aBuddyId) const |
334 TBool CVIMPSTEngineIMSubService::IsConversationExistL(const TDesC& aBuddyId) const |
351 { |
335 { |
352 |
336 TRACER_AUTO; |
353 TRACE( T_LIT("CVIMPSTEngineIMSubService::IsConversationExistL start")); |
337 TRACE( "Buddy Id : %S", &aBuddyId ); |
354 TRACE( T_LIT("IsConversationExistL() Buddy Id : %S"), &aBuddyId ); |
|
355 |
338 |
356 TInt exist = EFalse; |
339 TInt exist = EFalse; |
357 |
340 |
358 if( iIMCacheAccessor ) |
341 if( iIMCacheAccessor ) |
359 { |
342 { |
360 exist = iIMCacheAccessor->IsConversationExistL( aBuddyId ); |
343 exist = iIMCacheAccessor->IsConversationExistL( aBuddyId ); |
361 TRACE( T_LIT("IsConversationExistL() iIMCacheAccessor returns with %d"), exist ); |
344 TRACE( "iIMCacheAccessor returns with %d", exist ); |
362 } |
345 } |
363 |
346 |
364 TRACE( T_LIT("IsConversationExistL() Exist: %d"), exist ); |
347 TRACE( "Exist: %d", exist ); |
365 TRACE( T_LIT("CVIMPSTEngineIMSubService::IsConversationExistL end")); |
|
366 return exist; |
348 return exist; |
367 } |
349 } |
368 |
350 |
369 //----------------------------------------------------------------------------- |
351 //----------------------------------------------------------------------------- |
370 // CVIMPSTEngineIMSubService::CloseConversationL |
352 // CVIMPSTEngineIMSubService::CloseConversationL |
371 // ( Other items commented in header ) |
353 // ( Other items commented in header ) |
372 //----------------------------------------------------------------------------- |
354 //----------------------------------------------------------------------------- |
373 void CVIMPSTEngineIMSubService::CloseConversationL( const TDesC& aContactId ) |
355 void CVIMPSTEngineIMSubService::CloseConversationL( const TDesC& aContactId ) |
374 { |
356 { |
375 TRACE( T_LIT("CVIMPSTEngineIMSubService::CloseConversationL start")); |
357 TRACER_AUTO; |
376 TRACE( T_LIT("CloseConversationL() Buddy Id : %S"), &aContactId ); |
358 TRACE( "Buddy Id : %S", &aContactId ); |
377 |
359 |
378 if( IsConversationExistL(aContactId) ) |
360 if( IsConversationExistL(aContactId) ) |
379 { |
361 { |
380 TRACE( T_LIT("CloseConversationL() iIMCacheAccessor CloseConversationL to be called") ); |
362 TRACE( "iIMCacheAccessor CloseConversationL to be called" ); |
381 iIMCacheAccessor->CloseConversationL( aContactId ); |
363 iIMCacheAccessor->CloseConversationL( aContactId ); |
382 TRACE( T_LIT("CloseConversationL() iIMCacheAccessor CloseConversationL Done") ); |
364 TRACE( "iIMCacheAccessor CloseConversationL Done" ); |
383 } |
365 } |
384 |
366 |
385 TRACE( T_LIT("CVIMPSTEngineIMSubService::CloseConversationL end")); |
|
386 } |
367 } |
387 //----------------------------------------------------------------------------- |
368 //----------------------------------------------------------------------------- |
388 // CVIMPSTEngineIMSubService::GetOpenChatListL |
369 // CVIMPSTEngineIMSubService::GetOpenChatListL |
389 // ( Other items commented in header ) |
370 // ( Other items commented in header ) |
390 //----------------------------------------------------------------------------- |
371 //----------------------------------------------------------------------------- |
391 RArray<SIMCacheChatItem> CVIMPSTEngineIMSubService::GetOpenChatListL() |
372 RArray<SIMCacheChatItem> CVIMPSTEngineIMSubService::GetOpenChatListL() |
392 { |
373 { |
393 TRACE( T_LIT("CloseConversationL() iIMCacheAccessor GetOpenChatListL called") ); |
374 TRACER_AUTO; |
394 RArray<SIMCacheChatItem> item; |
375 RArray<SIMCacheChatItem> item; |
395 if(iIMCacheAccessor) |
376 if(iIMCacheAccessor) |
396 { |
377 { |
397 item = iIMCacheAccessor->GetChatListL( iServiceId ); |
378 item = iIMCacheAccessor->GetChatListL( iServiceId ); |
398 } |
379 } |
405 // |
386 // |
406 TVIMPSTEnums::TVIMPSTRegistrationState CVIMPSTEngineIMSubService::ResolveServiceStateL( |
387 TVIMPSTEnums::TVIMPSTRegistrationState CVIMPSTEngineIMSubService::ResolveServiceStateL( |
407 TCCHSubserviceState aState, |
388 TCCHSubserviceState aState, |
408 TInt aServiceError ) |
389 TInt aServiceError ) |
409 { |
390 { |
410 |
391 TRACER_AUTO; |
411 TRACE( T_LIT("CVIMPSTEngineIMSubService::ResolveServiceStateL start")); |
|
412 |
392 |
413 TVIMPSTEnums::TVIMPSTRegistrationState state = TVIMPSTEnums::ESVCENotRegistered; |
393 TVIMPSTEnums::TVIMPSTRegistrationState state = TVIMPSTEnums::ESVCENotRegistered; |
414 |
394 |
415 TRACE( T_LIT("ResolveServiceStateL() iServiceId: %d, ServiceState: %d"), |
395 |
416 iServiceId, aState ); |
396 TRACE( "iServiceId: %d, ServiceState: %d", iServiceId, aState ); |
417 |
397 |
418 TBool handleServiceStates = ETrue; |
398 TBool handleServiceStates = ETrue; |
419 if ( aServiceError && ECCHDisabled != aState ) |
399 if ( aServiceError && ECCHDisabled != aState ) |
420 { |
400 { |
421 //Only if the Service supports ALR, the state can goto WaitingForNetwork |
401 //Only if the Service supports ALR, the state can goto WaitingForNetwork |
422 //Still API from CCH is required to know whether ALR is supported or not |
402 //Still API from CCH is required to know whether ALR is supported or not |
423 if ( (KCCHErrorInvalidSettings != aServiceError) && (ECCHConnecting == aState) ) |
403 if ( (KCCHErrorInvalidSettings != aServiceError) && (ECCHConnecting == aState) ) |
424 { |
404 { |
425 TRACE( T_LIT("ResolveServiceStateL() ESVCEWaitingForNetwork") ); |
405 TRACE("ESVCEWaitingForNetwork" ); |
426 handleServiceStates = EFalse; |
406 handleServiceStates = EFalse; |
427 state = TVIMPSTEnums::ESVCEWaitingForNetwork; |
407 state = TVIMPSTEnums::ESVCEWaitingForNetwork; |
428 } |
408 } |
429 } |
409 } |
430 |
410 |
432 { |
412 { |
433 switch ( aState ) |
413 switch ( aState ) |
434 { |
414 { |
435 case ECCHEnabled: |
415 case ECCHEnabled: |
436 { |
416 { |
437 TRACE( T_LIT("ResolveServiceStateL() ESVCERegistered") ); |
417 TRACE( "ESVCERegistered" ); |
438 CreateIMCacheAccessorL(); |
418 CreateIMCacheAccessorL(); |
439 state = TVIMPSTEnums::ESVCERegistered; |
419 state = TVIMPSTEnums::ESVCERegistered; |
440 } |
420 } |
441 break; |
421 break; |
442 |
422 |
443 case ECCHDisconnecting: |
423 case ECCHDisconnecting: |
444 { |
424 { |
445 TRACE( T_LIT("ResolveServiceStateL() ESVCENetworkDisConnecting") ); |
425 TRACE( "ESVCENetworkDisConnecting" ); |
446 state = TVIMPSTEnums::ESVCENetworkDisConnecting; |
426 state = TVIMPSTEnums::ESVCENetworkDisConnecting; |
447 } |
427 } |
448 break; |
428 break; |
449 |
429 |
450 case ECCHUninitialized: |
430 case ECCHUninitialized: |
451 case ECCHDisabled: |
431 case ECCHDisabled: |
452 { |
432 { |
453 TRACE( T_LIT("ResolveServiceStateL() ESVCENotRegistered") ); |
433 TRACE( "ESVCENotRegistered" ); |
454 ReleaseIMCacheAccessor(); |
434 ReleaseIMCacheAccessor(); |
455 state = TVIMPSTEnums::ESVCENotRegistered; |
435 state = TVIMPSTEnums::ESVCENotRegistered; |
456 } |
436 } |
457 break; |
437 break; |
458 |
438 |
459 case ECCHConnecting: |
439 case ECCHConnecting: |
460 { |
440 { |
461 TRACE( T_LIT("ResolveServiceStateL() ESVCENetworkConnecting") ); |
441 TRACE( "ESVCENetworkConnecting" ); |
462 state = TVIMPSTEnums::ESVCENetworkConnecting; |
442 state = TVIMPSTEnums::ESVCENetworkConnecting; |
463 } |
443 } |
464 break; |
444 break; |
465 |
445 |
466 default: |
446 default: |
467 break; |
447 break; |
468 } |
448 } |
469 } |
449 } |
470 |
450 |
471 TRACE( T_LIT("CVIMPSTEngineIMSubService::ResolveServiceStateL end")); |
|
472 |
451 |
473 return state; |
452 return state; |
474 |
453 |
475 } |
454 } |
476 |
455 |
495 void CVIMPSTEngineIMSubService::CchEventOccuredL( |
475 void CVIMPSTEngineIMSubService::CchEventOccuredL( |
496 TUint /*aServiceId*/, |
476 TUint /*aServiceId*/, |
497 TCCHSubserviceState aState, |
477 TCCHSubserviceState aState, |
498 TInt aServiceError ) |
478 TInt aServiceError ) |
499 { |
479 { |
500 |
480 TRACER_AUTO; |
501 TRACE( T_LIT("CVIMPSTEngineIMSubService::CchEventOccuredL start")); |
481 TRACE( "TCCHSubserviceState : %d, ServiceErr: %d", aState, aServiceError ); |
502 TRACE( T_LIT("CchEventOccuredL() TCCHSubserviceState : %d, ServiceErr: %d"), |
|
503 aState, aServiceError ); |
|
504 |
482 |
505 if ( aServiceError && ECCHDisabled != aState ) |
483 if ( aServiceError && ECCHDisabled != aState ) |
506 { |
484 { |
507 //we might even end up in waiting for connection state for all |
485 //we might even end up in waiting for connection state for all |
508 //those service which are ALR enabled |
486 //those service which are ALR enabled |
527 // --------------------------------------------------------------------------- |
504 // --------------------------------------------------------------------------- |
528 // |
505 // |
529 void CVIMPSTEngineIMSubService::DoHandleCchErrorL( |
506 void CVIMPSTEngineIMSubService::DoHandleCchErrorL( |
530 TInt aServiceError ) |
507 TInt aServiceError ) |
531 { |
508 { |
532 |
509 TRACER_AUTO; |
533 TRACE( T_LIT("CVIMPSTEngineIMSubService::DoHandleCchErrorL start")); |
510 TRACE( "ServiceErr: %d", aServiceError ); |
534 TRACE( T_LIT("DoHandleCchErrorL() ServiceErr: %d"), |
|
535 aServiceError ); |
|
536 |
511 |
537 switch ( aServiceError ) |
512 switch ( aServiceError ) |
538 { |
513 { |
539 case KCCHErrorNetworkLost: |
514 case KCCHErrorNetworkLost: |
540 case KCCHErrorBandwidthInsufficient: |
515 case KCCHErrorBandwidthInsufficient: |
580 //TBD |
555 //TBD |
581 } |
556 } |
582 break; |
557 break; |
583 } |
558 } |
584 |
559 |
585 TRACE( T_LIT("CVIMPSTEngineIMSubService::DoHandleCchErrorL end")); |
|
586 |
560 |
587 } |
561 } |
588 |
562 |
589 |
563 |
590 // --------------------------------------------------------------------------- |
564 // --------------------------------------------------------------------------- |
591 // CVIMPSTEngineIMSubService::CreateIMCacheAccessorL() |
565 // CVIMPSTEngineIMSubService::CreateIMCacheAccessorL() |
592 // --------------------------------------------------------------------------- |
566 // --------------------------------------------------------------------------- |
593 // |
567 // |
594 void CVIMPSTEngineIMSubService::CreateIMCacheAccessorL() |
568 void CVIMPSTEngineIMSubService::CreateIMCacheAccessorL() |
595 { |
569 { |
596 TRACE( T_LIT("CVIMPSTEngineIMSubService::CreateIMCacheAccessorL start")); |
570 TRACER_AUTO; |
597 |
|
598 if (!iIMCacheFactory) |
571 if (!iIMCacheFactory) |
599 { |
572 { |
600 HBufC* ownData = iCchHandler.GetConParametersL(ECchUsername);// |
573 HBufC* ownData = iCchHandler.GetConParametersL(ECchUsername);// |
601 CleanupStack::PushL(ownData); |
574 CleanupStack::PushL(ownData); |
602 TPtr ownDataPtr = ownData->Des(); |
575 TPtr ownDataPtr = ownData->Des(); |
603 TRACE( T_LIT("DoHandleCchErrorL() ServiceErr: %S"), |
576 TRACE( "ServiceErr: %S",&ownDataPtr ); |
604 &ownDataPtr ); |
|
605 // im cache factory |
577 // im cache factory |
606 iIMCacheFactory = CIMCacheFactory::InstanceL(); |
578 iIMCacheFactory = CIMCacheFactory::InstanceL(); |
607 |
579 |
608 // im cache update interface |
580 // im cache update interface |
609 if (!iIMCacheAccessor) |
581 if (!iIMCacheAccessor) |
613 iIMCacheAccessor->RegisterObserverL(*this); |
585 iIMCacheAccessor->RegisterObserverL(*this); |
614 } |
586 } |
615 |
587 |
616 CleanupStack::PopAndDestroy(ownData); |
588 CleanupStack::PopAndDestroy(ownData); |
617 } |
589 } |
618 TRACE( T_LIT("CVIMPSTEngineIMSubService::CreateIMCacheAccessorL end")); |
|
619 } |
590 } |
620 |
591 |
621 // --------------------------------------------------------------------------- |
592 // --------------------------------------------------------------------------- |
622 // CVIMPSTEngineIMSubService::ReleaseIMCacheAccessor() |
593 // CVIMPSTEngineIMSubService::ReleaseIMCacheAccessor() |
623 // --------------------------------------------------------------------------- |
594 // --------------------------------------------------------------------------- |
624 // |
595 // |
625 void CVIMPSTEngineIMSubService::ReleaseIMCacheAccessor() |
596 void CVIMPSTEngineIMSubService::ReleaseIMCacheAccessor() |
626 { |
597 { |
627 TRACE( T_LIT("CVIMPSTEngineIMSubService::ReleaseIMCacheAccessor start")); |
598 TRACER_AUTO; |
628 |
599 |
629 if( iIMCacheAccessor ) |
600 if( iIMCacheAccessor ) |
630 { |
601 { |
631 iIMCacheAccessor->UnRegisterObserver(*this); |
602 iIMCacheAccessor->UnRegisterObserver(*this); |
632 } |
603 } |
636 CIMCacheFactory::Release(); |
607 CIMCacheFactory::Release(); |
637 iIMCacheAccessor = NULL; |
608 iIMCacheAccessor = NULL; |
638 iIMCacheFactory = NULL; |
609 iIMCacheFactory = NULL; |
639 } |
610 } |
640 |
611 |
641 TRACE( T_LIT("CVIMPSTEngineIMSubService::ReleaseIMCacheAccessor end")); |
|
642 } |
612 } |
643 |
613 |
644 |
614 |
645 // --------------------------------------------------------------------------- |
615 // --------------------------------------------------------------------------- |
646 // CVIMPSTEngineIMSubService::NotifyObserversL() |
616 // CVIMPSTEngineIMSubService::NotifyObserversL() |
647 // --------------------------------------------------------------------------- |
617 // --------------------------------------------------------------------------- |
648 // |
618 // |
649 void CVIMPSTEngineIMSubService::NotifyObserversL( TVIMPSTEnums::TIMEventType aEventType ,const TDesC& aBuddyId ) |
619 void CVIMPSTEngineIMSubService::NotifyObserversL( TVIMPSTEnums::TIMEventType aEventType ,const TDesC& aBuddyId ) |
650 { |
620 { |
651 TRACE( T_LIT("CVIMPSTEngineIMSubService::NotifyObserversL start")); |
621 TRACER_AUTO; |
652 TInt count = iChatObserver.Count(); |
622 TInt count = iChatObserver.Count(); |
653 for (TInt index=0; index<count; index++) |
623 for (TInt index=0; index<count; index++) |
654 { |
624 { |
655 iChatObserver[index]->HandleChatMessageEventL(aEventType ,aBuddyId ); |
625 iChatObserver[index]->HandleChatMessageEventL(aEventType ,aBuddyId ); |
656 } |
626 } |
657 TRACE( T_LIT("CVIMPSTEngineIMSubService::NotifyObserversL end")); |
|
658 } |
627 } |
659 |
628 |
660 // End of File |
629 // End of File |
661 |
630 |