metadataengine/client/src/mdenotifierao.cpp
branchRCL_3
changeset 6 646a02f170b9
parent 0 c53acadfccc6
child 7 3cebc1a84278
equal deleted inserted replaced
3:6752808b2036 6:646a02f170b9
   236     switch( iType & status )
   236     switch( iType & status )
   237         {
   237         {
   238         case EObjectNotifyAdd:
   238         case EObjectNotifyAdd:
   239         	{
   239         	{
   240         	MMdEObjectObserver* obs = static_cast<MMdEObjectObserver*>( iObserver );
   240         	MMdEObjectObserver* obs = static_cast<MMdEObjectObserver*>( iObserver );
   241         	obs->HandleObjectNotification( iSessionImpl, ENotifyAdd, iIdArray );
   241         	obs->HandleObjectNotification( iSessionImpl, ENotifyAdd, iIdArray );     
   242             iIdArray.Reset();            
       
   243         	break;
   242         	break;
   244         	}
   243         	}
   245         case EObjectNotifyModify:
   244         case EObjectNotifyModify:
   246         	{
   245         	{
   247         	MMdEObjectObserver* obs = static_cast<MMdEObjectObserver*>( iObserver );
   246         	MMdEObjectObserver* obs = static_cast<MMdEObjectObserver*>( iObserver );
   248         	obs->HandleObjectNotification( iSessionImpl, ENotifyModify, iIdArray );
   247         	obs->HandleObjectNotification( iSessionImpl, ENotifyModify, iIdArray );         
   249             iIdArray.Reset();            
       
   250         	break;
   248         	break;
   251         	}
   249         	}
   252         case EObjectNotifyRemove:
   250         case EObjectNotifyRemove:
   253         	{
   251         	{
   254         	MMdEObjectObserver* obs = static_cast<MMdEObjectObserver*>( iObserver );
   252         	MMdEObjectObserver* obs = static_cast<MMdEObjectObserver*>( iObserver );
   255         	obs->HandleObjectNotification( iSessionImpl, ENotifyRemove, iIdArray );
   253         	obs->HandleObjectNotification( iSessionImpl, ENotifyRemove, iIdArray );        
   256             iIdArray.Reset();            
       
   257         	break;
   254         	break;
   258         	}
   255         	}
   259 
   256 
   260         case EObjectNotifyPresent:
   257         case EObjectNotifyPresent:
   261         	{
   258         	{
   262 	    	MMdEObjectPresentObserver* obs = static_cast<MMdEObjectPresentObserver*>( iObserver );
   259 	    	MMdEObjectPresentObserver* obs = static_cast<MMdEObjectPresentObserver*>( iObserver );
   263             obs->HandleObjectPresentNotification( iSessionImpl, ETrue, iIdArray );
   260             obs->HandleObjectPresentNotification( iSessionImpl, ETrue, iIdArray );      
   264             iIdArray.Reset();            
       
   265 	    	break;
   261 	    	break;
   266         	}
   262         	}
   267         case EObjectNotifyNotPresent:
   263         case EObjectNotifyNotPresent:
   268         	{
   264         	{
   269 	    	MMdEObjectPresentObserver* obs = static_cast<MMdEObjectPresentObserver*>( iObserver );
   265 	    	MMdEObjectPresentObserver* obs = static_cast<MMdEObjectPresentObserver*>( iObserver );
   270             obs->HandleObjectPresentNotification( iSessionImpl, EFalse, iIdArray );
   266             obs->HandleObjectPresentNotification( iSessionImpl, EFalse, iIdArray );       
   271             iIdArray.Reset();            
       
   272 	    	break;
   267 	    	break;
   273         	}
   268         	}
   274     	
   269     	
   275         case ERelationNotifyAdd:
   270         case ERelationNotifyAdd:
   276         	{
   271         	{
   277 	        MMdERelationObserver* obs = static_cast<MMdERelationObserver*>( iObserver );
   272 	        MMdERelationObserver* obs = static_cast<MMdERelationObserver*>( iObserver );
   278             obs->HandleRelationNotification( iSessionImpl, ENotifyAdd, iIdArray );
   273             obs->HandleRelationNotification( iSessionImpl, ENotifyAdd, iIdArray );           
   279             iIdArray.Reset();            
       
   280 	        break;
   274 	        break;
   281         	}
   275         	}
   282         case ERelationNotifyModify:
   276         case ERelationNotifyModify:
   283         	{
   277         	{
   284 	        MMdERelationObserver* obs = static_cast<MMdERelationObserver*>( iObserver );
   278 	        MMdERelationObserver* obs = static_cast<MMdERelationObserver*>( iObserver );
   285             obs->HandleRelationNotification( iSessionImpl, ENotifyModify, iIdArray );
   279             obs->HandleRelationNotification( iSessionImpl, ENotifyModify, iIdArray );        
   286             iIdArray.Reset();            
       
   287 	        break;
   280 	        break;
   288         	}
   281         	}
   289         case ERelationNotifyRemove:
   282         case ERelationNotifyRemove:
   290         	{
   283         	{
   291 	        MMdERelationObserver* obs = static_cast<MMdERelationObserver*>( iObserver );
   284 	        MMdERelationObserver* obs = static_cast<MMdERelationObserver*>( iObserver );
   292             obs->HandleRelationNotification( iSessionImpl, ENotifyRemove, iIdArray );
   285             obs->HandleRelationNotification( iSessionImpl, ENotifyRemove, iIdArray );        
   293             iIdArray.Reset();            
       
   294 	        break;
   286 	        break;
   295         	}
   287         	}
   296 
   288 
   297         case ERelationNotifyPresent:
   289         case ERelationNotifyPresent:
   298         	{
   290         	{
   299 	    	MMdERelationPresentObserver* obs = static_cast<MMdERelationPresentObserver*>( iObserver );
   291 	    	MMdERelationPresentObserver* obs = static_cast<MMdERelationPresentObserver*>( iObserver );
   300             obs->HandleRelationPresentNotification( iSessionImpl, ETrue, iIdArray );
   292             obs->HandleRelationPresentNotification( iSessionImpl, ETrue, iIdArray );          
   301             iIdArray.Reset();            
       
   302 	    	break;
   293 	    	break;
   303         	}
   294         	}
   304         case ERelationNotifyNotPresent:
   295         case ERelationNotifyNotPresent:
   305         	{
   296         	{
   306 	    	MMdERelationPresentObserver* obs = static_cast<MMdERelationPresentObserver*>( iObserver );
   297 	    	MMdERelationPresentObserver* obs = static_cast<MMdERelationPresentObserver*>( iObserver );
   307             obs->HandleRelationPresentNotification( iSessionImpl, EFalse, iIdArray );
   298             obs->HandleRelationPresentNotification( iSessionImpl, EFalse, iIdArray );         
   308             iIdArray.Reset();            
       
   309 	    	break;
   299 	    	break;
   310         	}
   300         	}
   311         	
   301         	
   312         case ERelationItemNotifyRemove:
   302         case ERelationItemNotifyRemove:
   313         	{
   303         	{
   314         	MMdERelationItemObserver* obs = static_cast<MMdERelationItemObserver*>( iObserver );
   304         	MMdERelationItemObserver* obs = static_cast<MMdERelationItemObserver*>( iObserver );
   315             obs->HandleRelationItemNotification( iSessionImpl, ENotifyRemove, iRelationItemArray );
   305             obs->HandleRelationItemNotification( iSessionImpl, ENotifyRemove, iRelationItemArray );
   316             iRelationItemArray.Reset();            
   306             iRelationItemArray.Reset();
       
   307             iRelationItemArray.Compress();
   317         	break;
   308         	break;
   318         	}
   309         	}
   319 
   310 
   320         case EEventNotifyAdd:
   311         case EEventNotifyAdd:
   321         	{
   312         	{
   322             MMdEEventObserver* obs = static_cast<MMdEEventObserver*>( iObserver );
   313             MMdEEventObserver* obs = static_cast<MMdEEventObserver*>( iObserver );
   323             obs->HandleEventNotification( iSessionImpl, ENotifyAdd, iIdArray);
   314             obs->HandleEventNotification( iSessionImpl, ENotifyAdd, iIdArray);      
   324             iIdArray.Reset();            
       
   325             break;
   315             break;
   326         	}
   316         	}
   327         case EEventNotifyRemove:
   317         case EEventNotifyRemove:
   328         	{
   318         	{
   329             MMdEEventObserver* obs = static_cast<MMdEEventObserver*>( iObserver );
   319             MMdEEventObserver* obs = static_cast<MMdEEventObserver*>( iObserver );
   330             obs->HandleEventNotification( iSessionImpl, ENotifyRemove, iIdArray);
   320             obs->HandleEventNotification( iSessionImpl, ENotifyRemove, iIdArray);           
   331             iIdArray.Reset();            
       
   332             break;
   321             break;
   333         	}
   322         	}
   334     	
   323     	
   335         case ESchemaModify:
   324         case ESchemaModify:
   336         	{
   325         	{
   341 
   330 
   342         default:
   331         default:
   343         	// no observer to call - this should be skipped on server side!
   332         	// no observer to call - this should be skipped on server side!
   344         	break;
   333         	break;
   345         }
   334         }
       
   335     iIdArray.Reset();
       
   336     iIdArray.Compress();
   346     }
   337     }
   347 
   338 
   348 void CMdENotifierAO::DecodeIdBufferL()
   339 void CMdENotifierAO::DecodeIdBufferL()
   349 	{
   340 	{
   350 	// IDs are always stored in object IDs, 
   341 	// IDs are always stored in object IDs, 
   354 	iDataBuffer->PositionL( KNoOffset );
   345 	iDataBuffer->PositionL( KNoOffset );
   355 	const TMdCItemIds& itemIds = TMdCItemIds::GetFromBufferL( *iDataBuffer );
   346 	const TMdCItemIds& itemIds = TMdCItemIds::GetFromBufferL( *iDataBuffer );
   356 	__ASSERT_DEBUG( iNamespaceDefId == itemIds.iNamespaceDefId, User::Panic( _L("Incorrect namespaceDef from returned items!"), KErrCorrupt ) );
   347 	__ASSERT_DEBUG( iNamespaceDefId == itemIds.iNamespaceDefId, User::Panic( _L("Incorrect namespaceDef from returned items!"), KErrCorrupt ) );
   357 
   348 
   358     iDataBuffer->PositionL( itemIds.iObjectIds.iPtr.iOffset );
   349     iDataBuffer->PositionL( itemIds.iObjectIds.iPtr.iOffset );
       
   350     iIdArray.ReserveL( itemIds.iObjectIds.iPtr.iCount );
   359 	for( TUint32 i = 0; i < itemIds.iObjectIds.iPtr.iCount; ++i )
   351 	for( TUint32 i = 0; i < itemIds.iObjectIds.iPtr.iCount; ++i )
   360 		{
   352 		{
   361 		TItemId id;
   353 		TItemId id;
   362 		iDataBuffer->ReceiveL( id );
   354 		iDataBuffer->ReceiveL( id );
   363 		iIdArray.AppendL( id );
   355 		iIdArray.AppendL( id );
   372 	__ASSERT_DEBUG( iNamespaceDefId == items.iNamespaceDefId, User::Panic( _L("Incorrect namespaceDef from returned items!"), KErrCorrupt ) );
   364 	__ASSERT_DEBUG( iNamespaceDefId == items.iNamespaceDefId, User::Panic( _L("Incorrect namespaceDef from returned items!"), KErrCorrupt ) );
   373 
   365 
   374     CMdENamespaceDef& namespaceDef = iSessionImpl.GetNamespaceDefL( iNamespaceDefId );
   366     CMdENamespaceDef& namespaceDef = iSessionImpl.GetNamespaceDefL( iNamespaceDefId );
   375     iDataBuffer->PositionL( items.iRelations.iPtr.iOffset );
   367     iDataBuffer->PositionL( items.iRelations.iPtr.iOffset );
   376     TMdERelation relation;
   368     TMdERelation relation;
       
   369     iRelationItemArray.ReserveL( items.iRelations.iPtr.iCount );
   377     for (TInt i = 0; i < items.iRelations.iPtr.iCount; ++i )
   370     for (TInt i = 0; i < items.iRelations.iPtr.iCount; ++i )
   378     	{
   371     	{
   379     	relation.DeSerializeL( *iDataBuffer, namespaceDef );
   372     	relation.DeSerializeL( *iDataBuffer, namespaceDef );
   380     	if ( relation.Id() )
   373     	if ( relation.Id() )
   381     		{
   374     		{
   382     		iRelationItemArray.Append( relation );
   375     		iRelationItemArray.AppendL( relation );
   383     		}
   376     		}
   384     	}
   377     	}
   385 	}
   378 	}