metadataengine/client/src/mdesessionimpl.cpp
branchRCL_3
changeset 10 ab88d4a85041
parent 9 82c0024438c8
child 13 4a4892eec172
equal deleted inserted replaced
9:82c0024438c8 10:ab88d4a85041
    39 #include "mdcserializationbuffer.h"
    39 #include "mdcserializationbuffer.h"
    40 #include "mdequerycriteriaserialization.h"
    40 #include "mdequerycriteriaserialization.h"
    41 #include "mdelogiccondition.h"
    41 #include "mdelogiccondition.h"
    42 #include "mdeobjectcondition.h"
    42 #include "mdeobjectcondition.h"
    43 #include "mdscommoninternal.h"
    43 #include "mdscommoninternal.h"
       
    44 
       
    45 // for CleanupResetAndDestroyPushL
       
    46 #include <mmf/common/mmfcontrollerpluginresolver.h>
    44 
    47 
    45 RMdESessionAsyncRequest::RMdESessionAsyncRequest( TRequestType aRequestType, 
    48 RMdESessionAsyncRequest::RMdESessionAsyncRequest( TRequestType aRequestType, 
    46 	CMdCSerializationBuffer* aBuffer, CMdCSerializationBuffer& aResultBuffer,
    49 	CMdCSerializationBuffer* aBuffer, CMdCSerializationBuffer& aResultBuffer,
    47 	TRequestStatus& aRequestStatus) : 
    50 	TRequestStatus& aRequestStatus) : 
    48 	iRequestType(aRequestType), iBuffer(aBuffer), iResultBuffer(&aResultBuffer), 
    51 	iRequestType(aRequestType), iBuffer(aBuffer), iResultBuffer(&aResultBuffer), 
  1838 
  1841 
  1839 void CMdESessionImpl::DeserializeQueryResultL( 
  1842 void CMdESessionImpl::DeserializeQueryResultL( 
  1840 		CMdCSerializationBuffer& aBuffer, 
  1843 		CMdCSerializationBuffer& aBuffer, 
  1841 		RPointerArray<CMdEInstanceItem>& aItems )
  1844 		RPointerArray<CMdEInstanceItem>& aItems )
  1842 	{
  1845 	{
       
  1846     CleanupResetAndDestroyPushL( aItems );
       
  1847     
  1843 	const TMdCItems& items = TMdCItems::GetFromBufferL( aBuffer );
  1848 	const TMdCItems& items = TMdCItems::GetFromBufferL( aBuffer );
  1844 
  1849 
  1845     CMdENamespaceDef& namespaceDef = GetNamespaceDefL( items.iNamespaceDefId );
  1850     CMdENamespaceDef& namespaceDef = GetNamespaceDefL( items.iNamespaceDefId );
  1846 
  1851 
  1847     aItems.ReserveL( items.iObjects.iPtr.iCount + items.iEvents.iPtr.iCount 
  1852     aItems.ReserveL( items.iObjects.iPtr.iCount + items.iEvents.iPtr.iCount 
  1879 					namespaceDef );
  1884 					namespaceDef );
  1880 			aItems.AppendL( relation );
  1885 			aItems.AppendL( relation );
  1881 			CleanupStack::Pop( relation );
  1886 			CleanupStack::Pop( relation );
  1882 			}
  1887 			}
  1883 		}
  1888 		}
       
  1889 	
       
  1890 	CleanupStack::Pop( &aItems );
  1884 	}
  1891 	}
  1885 
  1892 
  1886 TItemId CMdESessionImpl::AddObjectL( CMdEObject& aObject )
  1893 TItemId CMdESessionImpl::AddObjectL( CMdEObject& aObject )
  1887     {
  1894     {
  1888     AddItemL(aObject);
  1895     AddItemL(aObject);
  2525     const TInt index = FindNotifier( 
  2532     const TInt index = FindNotifier( 
  2526     		EObjectNotifyAdd | EObjectNotifyModify | EObjectNotifyRemove,
  2533     		EObjectNotifyAdd | EObjectNotifyModify | EObjectNotifyRemove,
  2527     		&aObserver, *namespaceDef );
  2534     		&aObserver, *namespaceDef );
  2528     if ( index != KErrNotFound )
  2535     if ( index != KErrNotFound )
  2529         {
  2536         {
  2530     	iNotifiers[index]->Cancel();
       
  2531     	delete iNotifiers[index];
  2537     	delete iNotifiers[index];
  2532     	iNotifiers[index] = NULL;
  2538     	iNotifiers[index] = NULL;
  2533     	iNotifiers.Remove( index );
  2539     	iNotifiers.Remove( index );
  2534     	iNotifiers.Compress();
  2540     	iNotifiers.Compress();
  2535         }
  2541         }
  2547 
  2553 
  2548     const TInt index = FindNotifier( EObjectNotifyPresent | EObjectNotifyNotPresent,
  2554     const TInt index = FindNotifier( EObjectNotifyPresent | EObjectNotifyNotPresent,
  2549     		&aObserver, namespaceDef );
  2555     		&aObserver, namespaceDef );
  2550     if ( index != KErrNotFound )
  2556     if ( index != KErrNotFound )
  2551         {
  2557         {
  2552     	iNotifiers[index]->Cancel();
       
  2553     	delete iNotifiers[index];
  2558     	delete iNotifiers[index];
  2554     	iNotifiers[index] = NULL;
  2559     	iNotifiers[index] = NULL;
  2555     	iNotifiers.Remove( index );
  2560     	iNotifiers.Remove( index );
  2556     	iNotifiers.Compress();
  2561     	iNotifiers.Compress();
  2557         }
  2562         }
  2578     const TInt index = FindNotifier( 
  2583     const TInt index = FindNotifier( 
  2579     		ERelationNotifyAdd | ERelationNotifyModify | ERelationNotifyRemove,
  2584     		ERelationNotifyAdd | ERelationNotifyModify | ERelationNotifyRemove,
  2580     		&aObserver, *namespaceDef );
  2585     		&aObserver, *namespaceDef );
  2581     if ( index != KErrNotFound )
  2586     if ( index != KErrNotFound )
  2582         {
  2587         {
  2583     	iNotifiers[index]->Cancel();
       
  2584     	delete iNotifiers[index];
  2588     	delete iNotifiers[index];
  2585     	iNotifiers[index] = NULL;
  2589     	iNotifiers[index] = NULL;
  2586     	iNotifiers.Remove( index );
  2590     	iNotifiers.Remove( index );
  2587     	iNotifiers.Compress();
  2591     	iNotifiers.Compress();
  2588         }
  2592         }
  2610     		/*ERelationItemNotifyAdd | ERelationItemNotifyModify |*/ 
  2614     		/*ERelationItemNotifyAdd | ERelationItemNotifyModify |*/ 
  2611     		ERelationItemNotifyRemove,
  2615     		ERelationItemNotifyRemove,
  2612     		&aObserver, *namespaceDef );
  2616     		&aObserver, *namespaceDef );
  2613     if ( index != KErrNotFound )
  2617     if ( index != KErrNotFound )
  2614         {
  2618         {
  2615     	iNotifiers[index]->Cancel();
       
  2616     	delete iNotifiers[index];
  2619     	delete iNotifiers[index];
  2617     	iNotifiers[index] = NULL;
  2620     	iNotifiers[index] = NULL;
  2618     	iNotifiers.Remove( index );
  2621     	iNotifiers.Remove( index );
  2619         }
  2622         }
  2620     else
  2623     else
  2632     const TInt index = FindNotifier( 
  2635     const TInt index = FindNotifier( 
  2633     		ERelationNotifyPresent | ERelationNotifyNotPresent,
  2636     		ERelationNotifyPresent | ERelationNotifyNotPresent,
  2634     		&aObserver, namespaceDef );
  2637     		&aObserver, namespaceDef );
  2635     if ( index != KErrNotFound )
  2638     if ( index != KErrNotFound )
  2636         {
  2639         {
  2637     	iNotifiers[index]->Cancel();
       
  2638     	delete iNotifiers[index];
  2640     	delete iNotifiers[index];
  2639     	iNotifiers[index] = NULL;
  2641     	iNotifiers[index] = NULL;
  2640     	iNotifiers.Remove( index );
  2642     	iNotifiers.Remove( index );
  2641     	iNotifiers.Compress();
  2643     	iNotifiers.Compress();
  2642         }
  2644         }
  2662     
  2664     
  2663     const TInt index = FindNotifier( EEventNotifyAdd | EEventNotifyRemove,
  2665     const TInt index = FindNotifier( EEventNotifyAdd | EEventNotifyRemove,
  2664     		&aObserver, *namespaceDef );
  2666     		&aObserver, *namespaceDef );
  2665     if ( index != KErrNotFound )
  2667     if ( index != KErrNotFound )
  2666         {
  2668         {
  2667 	    iNotifiers[index]->Cancel();
       
  2668 	    delete iNotifiers[index];
  2669 	    delete iNotifiers[index];
  2669 	    iNotifiers[index] = NULL;
  2670 	    iNotifiers[index] = NULL;
  2670 	    iNotifiers.Remove( index );
  2671 	    iNotifiers.Remove( index );
  2671         }
  2672         }
  2672     else
  2673     else
  2889 	}
  2890 	}
  2890 
  2891 
  2891 void CMdESessionImpl::GetItemIdL( CMdCSerializationBuffer* aBuffer, 
  2892 void CMdESessionImpl::GetItemIdL( CMdCSerializationBuffer* aBuffer, 
  2892 		RArray<TItemId>& aIdArray )
  2893 		RArray<TItemId>& aIdArray )
  2893 	{
  2894 	{
       
  2895     CleanupClosePushL( aIdArray );
       
  2896     
  2894 	const TMdCItemIds& itemIds = TMdCItemIds::GetFromBufferL( *aBuffer );
  2897 	const TMdCItemIds& itemIds = TMdCItemIds::GetFromBufferL( *aBuffer );
  2895 
  2898 
  2896 	if( itemIds.iObjectIds.iPtr.iCount > 0 ) 
  2899 	if( itemIds.iObjectIds.iPtr.iCount > 0 ) 
  2897 	    {
  2900 	    {
  2898 	    aBuffer->PositionL( itemIds.iObjectIds.iPtr.iOffset );
  2901 	    aBuffer->PositionL( itemIds.iObjectIds.iPtr.iOffset );
  2915 	    {
  2918 	    {
  2916 	    TItemId id;
  2919 	    TItemId id;
  2917 	    aBuffer->ReceiveL( id );
  2920 	    aBuffer->ReceiveL( id );
  2918 	    aIdArray.AppendL( id );
  2921 	    aIdArray.AppendL( id );
  2919 	    }
  2922 	    }
       
  2923 	
       
  2924 	CleanupStack::Pop( &aIdArray );
  2920 	}
  2925 	}
  2921 
  2926 
  2922 void CMdESessionImpl::GetDistinctValuesL( CMdCSerializationBuffer& aBuffer, 
  2927 void CMdESessionImpl::GetDistinctValuesL( CMdCSerializationBuffer& aBuffer, 
  2923 		CDesCArray& aResults )
  2928 		CDesCArray& aResults )
  2924 	{
  2929 	{
  3019     const TInt index = FindNotifier( 
  3024     const TInt index = FindNotifier( 
  3020             EObjectNotifyAddWithUri | EObjectNotifyModifyWithUri | EObjectNotifyRemoveWithUri,
  3025             EObjectNotifyAddWithUri | EObjectNotifyModifyWithUri | EObjectNotifyRemoveWithUri,
  3021             &aObserver, *namespaceDef );
  3026             &aObserver, *namespaceDef );
  3022     if ( index != KErrNotFound )
  3027     if ( index != KErrNotFound )
  3023         {
  3028         {
  3024         iNotifiers[index]->Cancel();
       
  3025         delete iNotifiers[index];
  3029         delete iNotifiers[index];
  3026         iNotifiers[index] = NULL;
  3030         iNotifiers[index] = NULL;
  3027         iNotifiers.Remove( index );
  3031         iNotifiers.Remove( index );
  3028         iNotifiers.Compress();
  3032         iNotifiers.Compress();
  3029         }
  3033         }