upnpharvester/mdhserver/src/server/mdhmediaservercontainer.cpp
branchIOP_Improvements
changeset 40 08b5eae9f9ff
parent 39 6369bfd1b60d
child 41 b4d83ea1d6e2
--- a/upnpharvester/mdhserver/src/server/mdhmediaservercontainer.cpp	Mon Nov 01 13:44:24 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,967 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:      Metadata Harvester server's mediaserver container component
-*
-*/
-
-
-
-
-
-
-
-// INCLUDE FILES
-#include    <e32property.h>
-#include    <f32file.h>
-
-#include    "cmsettingsfactory.h"
-#include    "cmsettings.h"
-#include    "cmdmmain.h"
-#include    "cmmediaserverfull.h"
-#include    "cmsearchresponsehash.h"
-#include    "cmsettings.h"
-#include    <upnpstring.h>
-#include    <upnperrors.h>
-#include    "mdhconnectionmonitor.h"
-#include    "mdhmediaservercontainer.h"
-#include    "mdhmetadatacollector.h"
-#include    "mdhserver.h"
-#include    "msdebug.h"
-
-
-// CONSTANTS
-#ifdef __SERIES60_31__
-_LIT8( KAVControlPointFriendlyName,  "AVDevice" );
-#endif //__SERIES60_31__
-_LIT8( KMediaServer,                 "MediaServer" );
-#ifdef _DEBUG
-_LIT8( KFriendlyNameTag,             "friendlyName" );
-#endif
-
-const TInt KDefaultCaculateSize = 100;
-const TInt KDefaultChunkSize = 150;
-const TInt KDefaultAddGranularity = 500;
-
-// amount of microseconds in one second
-const TInt KMicrosecondsInSecond = 1000000;
-// ---------------------------------------------------------------------------
-// Two-phase API constructor
-// ---------------------------------------------------------------------------
-// 
-CCmMdhMediaserverInfo* CCmMdhMediaserverInfo::NewL( )
-    {  
-    CCmMdhMediaserverInfo* self = CCmMdhMediaserverInfo::NewLC( );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Two-phase API constructor
-// ---------------------------------------------------------------------------
-//     
-CCmMdhMediaserverInfo* CCmMdhMediaserverInfo::NewLC()
-    {   
-    CCmMdhMediaserverInfo* self = new ( ELeave ) CCmMdhMediaserverInfo( );
-    CleanupStack::PushL( self );
-    self->ConstructL( );    
-    return self;  
-    }    
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-// 
-CCmMdhMediaserverInfo::~CCmMdhMediaserverInfo()
-    {
-    delete iUuid;
-    }
-    
-// ---------------------------------------------------------------------------
-// C++ default constructor
-// ---------------------------------------------------------------------------
-//            
-CCmMdhMediaserverInfo::CCmMdhMediaserverInfo( )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// ConstructL
-// ---------------------------------------------------------------------------
-//  
-void CCmMdhMediaserverInfo::ConstructL( )
-    {
-                                  
-    } 
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-CCmMdhMediaserverContainer* CCmMdhMediaserverContainer::NewL(
-    CCmMdhServer& aMdhServer)
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::NewL"));
-
-    CCmMdhMediaserverContainer* self =
-        new (ELeave) CCmMdhMediaserverContainer(aMdhServer);
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Constructor.
-// ---------------------------------------------------------------------------
-CCmMdhMediaserverContainer::CCmMdhMediaserverContainer(
-    CCmMdhServer& aMdhServer)
-    :iMdhServer( aMdhServer )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             CCmMdhMediaserverContainer"));
-    iAvControlPoint = NULL;
-    iMetadataCollector = NULL;
-    iTimer = NULL;
-    iMediaserverIndex = 0;
-    iResponsesPending = 0;
-    iTotalItemCount = 0;
-    iHarvestErrCode = KErrNone;
-    iHarvestActive = EFalse;
-    iPropertyItemIndex = 0;
-    iProgressInfo.iService = ECmServiceHarvest;
-    }
-
-// ---------------------------------------------------------------------------
-// 2nd phase constructor.
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::ConstructL()
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::ConstructL"));
-    iDbManager = CCmDmMain::NewL();
-    iSettings = CCmSettingsFactory::NewCmSettingsEngineL();
-    iSettings->GetIapL( iIap );
-    TRACE( Print( _L("[CmMdh Server]\t Monitoring iap %d"), iIap ));
-    iMdHConMon = CMdHConnectionMonitor::NewL( *this, iIap );
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-CCmMdhMediaserverContainer::~CCmMdhMediaserverContainer()
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             ~CCmMdhMediaserverContainer"));
-
-    TRACE( Print( _L("[CmMdh Server]\t deleting %d media servers"),
-        iMediaservers.Count()));
-
-    iMediaservers.ResetAndDestroy();
-    iOldMediaServers.ResetAndDestroy();
-
-    LOG(_L("[CmMdh Server]\t deleting settings engine.."));
-	if ( iSettings )
-	    {
-	    iSettings->Close();    
-	    }
-
-    LOG(_L("[CmMdh Server]\t deleting db manager.."));
-    if ( iDbManager )
-        {
-        delete iDbManager;    
-        }    
-
-    LOG(_L("[CmMdh Server]\t deleting metadata collector.."));
-    if ( iMetadataCollector )
-        {
-        delete iMetadataCollector;
-        }
-
-    LOG(_L("[CmMdh Server]\t deleting av control point.."));
-    if ( iAvControlPoint )
-        {
-        delete iAvControlPoint;    
-        }
-
-    LOG(_L("[CmMdh Server]\t deleting timer.."));
-    if ( iTimer )
-        {
-        delete iTimer;    
-        }
-    
-    LOG(_L("[CmMdh Server]\t deleting connection monitor.."));
-    if ( iMdHConMon )
-        {
-        delete iMdHConMon;    
-        }
-    
-    LOG(_L("[CmMdh Server]\t All deleted.."));
-    }
-        
-// ---------------------------------------------------------------------------
-// Harvest a media server
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::DoHarvestMediaserverL(
-    TInt aMediaserverIndex )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             DoHarvestMediaserverL"));
-    iMdhServer.SetServerStateL(ECmMdhServerStateHarvesting);
-    if ( iMediaservers[aMediaserverIndex]->iMediaserverState
-        == ECmMdhMediaserverNotSynchronized)
-        {
-        iMetadataCollector->HarvestMediaserverL(
-            *iMediaservers[aMediaserverIndex]->iUuid );
-        iHarvestActive = ETrue;
-        }
-    else
-        {
-        LOG(_L("[CmMdh Server]\t No search caps or \
-                                 no sync needed, skipping.."));
-        HarvestCompleteL( KErrNone );
-        }
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             DoHarvestMediaserverL end"));
-    }
-
-// ---------------------------------------------------------------------------
-// Adds a media server to database if it doesn't exist there
-// ---------------------------------------------------------------------------
-TBool CCmMdhMediaserverContainer::AddToDbIfNewL( CUpnpDevice& aMediaserver )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::AddToDbIfNewL"));
-
-    CCmMediaServerFull* tempServer = CCmMediaServerFull::NewLC();
-    tempServer->SetUDNL( aMediaserver.Uuid() );
-    iDbManager->PrepareQueryCmdL( EMediaServerInfoQyery );
-    TInt errCode = iDbManager->QueryMediaServerL( tempServer );
-    TBool ret = EFalse;
-    
-    if ( errCode != KErrNotFound )
-        {
-        TRACE( Print( _L("[CmMdh Server]\t FillUsage: %d"),
-        		tempServer->FillUsage()));
-        ret = (TBool)tempServer->FillUsage();
-        iAllFound = ETrue;
-        for( TInt i = 0 ; i < iOldMediaServers.Count(); i++ )
-            {
-            if( KErrNotFound != aMediaserver.Uuid().Match(
-                iOldMediaServers[i]->MediaServer() ) )
-                {
-                TRACE( Print( _L("[CmMdh Server]\t In db...")));
-                iOldMediaServers[i]->SetFillUsage( EFalse );
-                }
-            if( iOldMediaServers[i]->FillUsage())
-                {
-                TRACE( Print( _L("[CmMdh Server]\t All not found")));
-                iAllFound = EFalse;
-                }
-            }
-        }
-    CleanupStack::PopAndDestroy( tempServer );
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// Decreases pending responses counter and finishes search if ready
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::DecResponsesAndFinishIfReadyL()
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             DecResponsesAndFinishIfReadyL"));
-    if ( !(--iResponsesPending )  )
-        {
-        if( iAllFound )
-	        {
-	        DoSearchTimerCompletedL();	
-	        }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Static timer callback function.
-// ---------------------------------------------------------------------------
-TInt CCmMdhMediaserverContainer::SearchTimerCompletedL( TAny* aInstance )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             SearchTimerCompleted"));
-    return ((CCmMdhMediaserverContainer*)aInstance)
-        ->DoSearchTimerCompletedL();
-   }
-
-// ---------------------------------------------------------------------------
-// Timer callback function.
-// ---------------------------------------------------------------------------
-TInt CCmMdhMediaserverContainer::DoSearchTimerCompletedL()
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-        DoSearchTimerCompleted"));
-    delete iTimer;
-    iTimer = NULL;
-    TRACE( Print( _L("[CmMdh Server]\t Found %d media servers"),
-        iMediaservers.Count()));
-
-    if ( !iResponsesPending )
-        {
-        iOldMediaServers.ResetAndDestroy();
-        iMdhServer.SetServerStateL(ECmMdhServerStateIdle);
-        }
-    return KErrNone;
-   }
-
-// ---------------------------------------------------------------------------
-// Handles UPnP device discoveries.
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::DeviceDiscoveredL( CUpnpDevice* aDevice )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::DeviceDiscoveredL"));
-
-#ifdef _DEBUG
-
-    HBufC* uuid = UpnpString::ToUnicodeL( aDevice->Uuid() );
-    HBufC* name = UpnpString::ToUnicodeL(
-                    aDevice->DescriptionProperty( KFriendlyNameTag() ));
-    HBufC* type = UpnpString::ToUnicodeL( aDevice->DeviceType() );
-    TRACE( Print(_L("[CmMdh Server]\t type: %S uuid: %S, name %S"),
-        type, uuid, name ));
-    delete uuid;
-    delete name;
-    delete type;
-
-#endif
-
-
-    if (!iTimer) // search is no more active
-        {
-        LOG(_L("[CmMdh Server]\t Search no more active, returning.."));
-        return;
-        }
-
-    if( aDevice->DeviceType().Find(KMediaServer) != KErrNotFound && 
-        !iAllFound )
-        {
-        LOG(_L("[CmMdh Server]\t Found a media server"));
-
-        if ( AddToDbIfNewL( *aDevice ) )
-            {
-            ++iResponsesPending;
-            iAvControlPoint->CdsSearchCapabilitiesActionL( aDevice->Uuid() );
-            }
-#ifdef _DEBUG
-
-        else
-            {
-            LOG(_L("[CmMdh Server]\t not active, skipping.."));
-            }
-#endif
-
-        }
-
-    }
-
-// ---------------------------------------------------------------------------
-// Handles UPnP device disappears.
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::DeviceDisappearedL(
-    CUpnpDevice* /* aDevice */ )
-    {
-    LOG( _L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-             DeviceDisappearedL") );
-    }
-
-// ---------------------------------------------------------------------------
-// Searches UPnP Media servers.
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::SearchMediaserversL()
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             SearchMediaServersL"));
-
-    iResponsesPending = 0;
-    iProgressInfo.iTotalItems = 0;
-    iProgressInfo.iProcessedItems = 0;
-
-    if ( !iAvControlPoint )
-        {
-        iSettings->GetIapL( iIap );
-        // Create and start (automatic) the AV control point
-        TRACE( Print( _L("[CmMdh Server]\t IAP to use is  %d"), iIap));
-        LOG( _L("[CmMdh Server]\t Creating AV control point..." ) );
-
-        iAvControlPoint = CUpnpAVControlPoint::NewL( *this );
-        }
-        
-    LOG( _L("[CmMdh Server]\t Creating CPeriodic timer..." ) );
-    iTimer = CPeriodic::NewL(EPriorityHigh);
-
-    TInt deviceDiscoveryDelay;
-    iSettings->GetDiscoveryDelay( deviceDiscoveryDelay );
-    TRACE(Print(_L("[CmMdh Server]\t using device discovery delay %d\n"),
-        deviceDiscoveryDelay));
-
-    iTimer->Start(deviceDiscoveryDelay * KMicrosecondsInSecond,
-                  0,
-                  TCallBack(SearchTimerCompletedL, this));
-
-    iMdhServer.SetServerStateL(ECmMdhServerStateSearching);
-
-    iOldMediaServers.ResetAndDestroy();
-    iDbManager->GetMediaServersL( iOldMediaServers );
-    
-    for ( TInt i = 0; i < iOldMediaServers.Count(); i++ )
-        {
-        if ( !iOldMediaServers[i]->FillUsage() &&
-             iOldMediaServers[i]->SystemUpdateID() != KErrNotFound )
-            {
-            iOldMediaServers[i]->SetSystemUpdateID( KErrNotFound );
-            iDbManager->UpdateMediaServerInfo( iOldMediaServers[i] );
-            }
-        }
-    
-    iAllFound = EFalse;
-    SendProgressInfo ( 0 );
-    }
-
-// ---------------------------------------------------------------------------
-// Harvests media servers
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::HarvestMediaserversL()
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             HarvestMediaserversL"));
-
-    if ( !iAvControlPoint )
-        {
-        User::Leave( KErrNotReady );
-        }
-
-    if ( !iMediaservers.Count() )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    TBool harvestNeeded = EFalse;
-    for ( TInt i = 0; i < iMediaservers.Count(); i++ )
-        {
-        if (iMediaservers[i]->iMediaserverState
-            == ECmMdhMediaserverNotSynchronized )
-            {
-            harvestNeeded = ETrue;
-            i = iMediaservers.Count(); // break from the loop
-            }
-        }
-
-    if ( !harvestNeeded )
-        {
-        User::Leave( KErrAlreadyExists );
-        }
-
-    if ( !iMetadataCollector )
-        {
-        LOG( _L("[CmMdh Server]\t Creating metadata collector.." ) );
-
-        TInt searchCount = KDefaultChunkSize;
-        TInt addGranularity = KDefaultAddGranularity;
-        iSettings->GetSearchCount( searchCount );
-        iSettings->GetAddCount( addGranularity );
-        TRACE( Print(
-            _L("[CmMdh Server]\t using chunk size %d and addgran %d"),
-            searchCount, addGranularity));
-        iMetadataCollector =
-            CCmMdhMetadataCollector::NewL(
-                *this, *iAvControlPoint, searchCount, addGranularity );
-
-        }
-    iMediaserverIndex = 0;
-    iHarvestErrCode = KErrNone;
-    DoHarvestMediaserverL( iMediaserverIndex );
-
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             HarvestMediaserversL end"));
-
-    }
-
-// ---------------------------------------------------------------------------
-// Harvest completion callback function
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::HarvestCompleteL( TInt aErr )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::HarvestComplete"));
-    iHarvestActive = EFalse;
-    if ( aErr != KErrNone )
-        {
-        iHarvestErrCode = aErr;
-        }
-    else
-        {
-        TInt newUpdateId =
-            iMediaservers[iMediaserverIndex]->iSystemUpdateId;
-        if ( newUpdateId ) // was set to 0 if no update needed
-            {
-            // store changed systemupdateid
-            CCmMediaServerFull* tempServer = CCmMediaServerFull::NewLC();
-            tempServer->SetUDNL(
-                *(iMediaservers[iMediaserverIndex]->iUuid) );
-            iDbManager->PrepareQueryCmdL( EMediaServerInfoQyery );
-            TInt errCode = iDbManager->QueryMediaServerL( tempServer );
-            if ( errCode != KErrNotFound )
-                {
-                TRACE( Print( _L
-                    ("[CmMdh Server]\t Updating systemupdateid to %d.."),
-                    newUpdateId ));
-
-                tempServer->SetSystemUpdateID( newUpdateId );
-                iDbManager->UpdateMediaServerInfo( tempServer );
-                }
-            CleanupStack::PopAndDestroy( tempServer );
-            }
-        }
-
-    if ( ++iMediaserverIndex < iMediaservers.Count() )
-        {
-        // harvest next
-        DoHarvestMediaserverL( iMediaserverIndex );
-        }
-    else
-        {
-        // no more media servers
-        iMdhServer.SetServerStateL(ECmMdhServerStateIdle, iHarvestErrCode);
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// Cancels search
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::CancelSearchL()
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::CancelSearchL"));
-    if (!iTimer) // no search is active
-        {
-        User::Leave( KErrNotReady );
-        }
-
-    iTimer->Cancel();
-    iMediaservers.ResetAndDestroy();
-    delete iTimer;
-    iTimer = NULL;
-    iMdhServer.SetServerStateL(ECmMdhServerStateIdle, KErrCancel);
-    }
-
-// ---------------------------------------------------------------------------
-// Cancels harvest
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::CancelHarvestL()
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::CancelHarvestL"));
-    iHarvestActive = EFalse;
-    iMetadataCollector->CancelHarvest();
-    iMdhServer.SetServerStateL(ECmMdhServerStateIdle, KErrCancel);
-    }
-
-// ---------------------------------------------------------------------------
-// Gets media server id from database
-// ---------------------------------------------------------------------------
-TInt CCmMdhMediaserverContainer::IdForMediaServerL( TDesC8& aUuid )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::IdForMediaServerL"));
-
-    iDbManager->PrepareQueryCmdL( EMediaServerIdQuery );
-
-    TInt id = iDbManager->QueryMediaServerId( aUuid );
-    TRACE( Print( _L("[CmMdh Server]\t returning id %d"), id));
-
-    return id;
-    }
-
-// ---------------------------------------------------------------------------
-// Sends progress info
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::SendProgressInfo( TInt aProgress )
-    {
-    TRACE( Print( _L(
-        "[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                          SendProgressInfo( %d )"),
-        aProgress));
-
-#ifdef _DEBUG
-
-    TInt alloc;
-    TInt cells = User::Heap().AllocSize( alloc );
-    TInt size = User::Heap().Size();
-    TRACE(Print(_L("[CmMdh Server]\t heap allocsize %d, size %d, cells %d"),
-        alloc, size, cells ));
-
-#endif
-
-
-    if ( iProgressInfo.iTotalItems > iProgressInfo.iProcessedItems )
-        {
-        iProgressInfo.iProcessedItems += aProgress;
-        TCmProgressInfoPckg progressPckg( iProgressInfo );
-        TRACE( Print( _L("[CmMdh Server]\t processed: %d total %d"),
-                iProgressInfo.iProcessedItems, iProgressInfo.iTotalItems) );
-        
-        if ( ( iProgressInfo.iTotalItems <= iProgressInfo.iProcessedItems ) ||
-             ( iProgressInfo.iTotalItems > iProgressInfo.iProcessedItems &&
-               iProgressInfo.iProcessedItems > 0 &&
-               ( iProgressInfo.iProcessedItems - iPropertyItemIndex ) >=
-               iProgressInfo.iTotalItems / KDefaultCaculateSize )
-           )
-            {
-            iPropertyItemIndex = iProgressInfo.iProcessedItems;
-            TInt err = RProperty::Set( KCmPropertyCat, KCmProperty, 
-                                   progressPckg );
-            TRACE( Print( _L("[CmMdh Server]\t RProperty::Set returned %d"), 
-                   err)); 
-            }
-        else
-            {
-            LOG(_L("[CmMdh Server]\t progress small no need to pub&sub"));
-            }
-        }
-
-    else
-        {
-        iProgressInfo.iProcessedItems += aProgress;
-        LOG(_L("[CmMdh Server]\t Bigger than 100%% or not beginning"));
-        }
-
-    }
-
-
-// Responses
-
-// ---------------------------------------------------------------------------
-// Observer callback for Content Directory Search function.
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::CdsSearchResponse(
-        const TDesC8& aUuid,
-        TInt aSessionId,
-        TInt aErr,
-        const TDesC8& /*aContainerId*/,
-        const TDesC8& /*aSearchCriteria*/,
-        const TDesC8& /*aFilter*/,
-        TInt /*aIndex*/,
-        TInt /*aRequest*/,
-        const TDesC8& /*aSortCriteria*/,
-        const TDesC8& aResult,
-        TInt aReturned,
-        TInt aMatches,
-        const TDesC8& /*aUpdateID*/)
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             CdsSearchResponse"));
-
-    TRAPD( err, CdsSearchResponseL( aUuid, 
-                                    aSessionId, 
-                                    aErr, 
-                                    aResult,
-                                    aReturned,
-                                    aMatches ) );
-    if ( err ) 
-        {
-        TRACE( Print(_L("[CmMdh Server]\t CdsSearchResponseL leaved with err:\
-             %d"), err ) );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Leaving version of CdsSearchResponseL callback.
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::CdsSearchResponseL(
-        const TDesC8& aUuid,
-        TInt aSessionId,
-        TInt aErr,
-        const TDesC8& aResult,
-        TInt aReturned,
-        TInt aMatches
-        )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             CdsSearchResponseL"));
-    if ( iHarvestActive )
-        {
-        iMetadataCollector->CdsSearchResponse(
-            aSessionId, aErr, aResult, aReturned, aMatches );
-        }
-    else if ( iTimer || iResponsesPending ) // media server search active
-        {
-        if ( aErr != EHttpOk )
-            {
-            for( TInt i = 0; i < iMediaservers.Count(); i++ )
-                {
-                if ( *(iMediaservers[i]->iUuid) == aUuid )
-                    {
-                    LOG(_L("[CmMdh Server]\t search error, \
-                            will not sync this.."));
-                    iMediaservers[i]->iMediaserverState =
-                        ECmMdhMediaserverNoSearchCaps;
-                    iMediaservers[i]->iSystemUpdateId = 0;
-                    }
-                }
-            }
-        else
-            {
-            iProgressInfo.iTotalItems += aMatches;
-            TRACE( Print( _L("[CmMdh Server]\t total item count \
-                                increased to %d"),
-            iProgressInfo.iTotalItems));
-            if( iAllFound )
-                {
-                // when all servers are discovered,1 percentage is 
-                // set.
-                SendProgressInfo( iProgressInfo.iTotalItems / 
-                				  KDefaultCaculateSize );
-                iProgressInfo.iProcessedItems = 0;
-                delete iTimer;
-                iTimer = NULL;
-                iOldMediaServers.ResetAndDestroy();
-                TRACE( Print( _L("[CmMdh Server]\t All servers found!!!")));
-                }
-            }
-        DecResponsesAndFinishIfReadyL();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Observer callback for Content Directory SearchCapabilities function.
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::CdsSearchCapabilitiesResponse(
-            const TDesC8& aUuid,
-            TInt /* aSessionId */,
-            TInt aErr,
-            const TDesC8& aSearchCaps )
-    {
-
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             CdsSearchCapabilitiesResponse"));
-
-    TRAPD( err, CdsSearchCapabilitiesResponseL( aUuid, 
-                                                aErr, 
-                                                aSearchCaps ) );
-    if ( err ) 
-        {
-        TRACE( Print(_L("[CmMdh Server]\t CdsSearchCapabilitiesResponseL \
-            leaved with err: %d"), err ) );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-//  Leaving version of CdsSystemUpdateIdResponse callback.
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::CdsSearchCapabilitiesResponseL(
-            const TDesC8& aUuid,
-            TInt aErr,
-            const TDesC8& aSearchCaps )
-    {
-
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             CdsSearchCapabilitiesResponseL"));
-
-#ifdef _DEBUG
-
-    HBufC* sc = UpnpString::ToUnicodeL( aSearchCaps );
-    TRACE( Print(_L("[CmMdh Server]\t err: %d caps: %S"),
-        aErr, sc ));
-    delete sc;
-
-#endif
-
-
-    HBufC8* uuid = HBufC8::NewL( aUuid.Length() );
-    uuid->Des().Copy( aUuid );
-    CleanupStack::PushL( uuid );
-    CCmMdhMediaserverInfo* info = CCmMdhMediaserverInfo::NewL( );
-    CleanupStack::PushL( info );
-    info->iUuid = uuid;
-    iMediaservers.AppendL( info );
-
-    if ( aErr == EHttpOk && aSearchCaps.Length() ) // has search capabilities
-        {
-        info->iMediaserverState = ECmMdhMediaserverNotSynchronized;
-        iAvControlPoint->CdsSystemUpdateIdActionL( aUuid );
-        }
-    else
-        {
-        DecResponsesAndFinishIfReadyL();
-        info->iSystemUpdateId = 0;
-        info->iMediaserverState = ECmMdhMediaserverNoSearchCaps;
-        }
-
-    CleanupStack::Pop( info );
-    CleanupStack::Pop( uuid );
-    }
-
-
-// ---------------------------------------------------------------------------
-// Observer callback for Content Directory GetSystemUpdateID function.
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::CdsSystemUpdateIdResponse(
-            const TDesC8& aUuid,
-            TInt /* aSessionId */,
-            TInt aErr,
-            TInt aSystemUpdateId )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             CdsSystemUpdateIdResponse"));
-
-    TRACE( Print(_L("[CmMdh Server]\t err: %d suid: %d"),
-        aErr, aSystemUpdateId ));
-    
-    TRAPD( err, CdsSystemUpdateIdResponseL( aUuid, 
-                                            aErr, 
-                                            aSystemUpdateId ) );
-    if ( err ) 
-        {
-        TRACE( Print(_L("[CmMdh Server]\t CdsSystemUpdateIdResponseL leaved \
-            with err: %d"), err ) );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Leaving version of CdsSystemUpdateIdResponse callback.
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::CdsSystemUpdateIdResponseL(
-            const TDesC8& aUuid,
-            TInt aErr,
-            TInt aSystemUpdateId )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             CdsSystemUpdateIdResponseL"));
-
-    TRACE( Print(_L("[CmMdh Server]\t err: %d suid: %d"),
-        aErr, aSystemUpdateId ));
-    for( TInt i = 0; i < iMediaservers.Count(); i++ )
-        {
-        if ( *(iMediaservers[i]->iUuid) == aUuid )
-
-            {
-            LOG(_L("[CmMdh Server]\t checking \
-                     media server's systemupdateid.."));
-
-            TInt errCode = KErrNotFound;
-            if ( aErr == EHttpOk )
-                {
-                CCmMediaServerFull* tempServer = CCmMediaServerFull::NewLC();
-                tempServer->SetUDNL( aUuid );
-                iDbManager->PrepareQueryCmdL( EMediaServerInfoQyery );
-                errCode = iDbManager->QueryMediaServerL( tempServer );
-                if ( errCode != KErrNotFound )
-                    {
-                    TRACE( Print( _L
-                        ("[CmMdh Server]\t returned id %d, old id %d"),
-                        aSystemUpdateId, tempServer->SystemUpdateID() ));
-
-
-                    if ( aSystemUpdateId == tempServer->SystemUpdateID() )
-                        {
-                        LOG(_L("[CmMdh Server]\t systemupdateid \
-                            match, no sync needed.."));
-                        iMediaservers[i]->iMediaserverState =
-                            ECmMdhMediaserverSynchronized;
-                        iMediaservers[i]->iSystemUpdateId = 0;
-                        DecResponsesAndFinishIfReadyL();
-                        }
-                    else
-                        {
-                        iMediaservers[i]->iSystemUpdateId = aSystemUpdateId;
-                        errCode = iAvControlPoint->CdsSearchActionL( aUuid,
-                                          KRootContainerId,
-                                          KSearchCriteria,
-                                          KSearchFilter,
-                                          0,
-                                          1,
-                                          KSortCriteria );
-                        TRACE( Print( _L("[CmMdh Server]\t search \
-                            request returned %d"), errCode));
-                        }
-                    }
-                CleanupStack::PopAndDestroy( tempServer );
-                }
-            if ( aErr != EHttpOk || errCode < 0 )
-                {
-                LOG(_L("[CmMdh Server]\t error with systemupdate \
-                    id response, not syncing this.."));
-                iMediaservers[i]->iMediaserverState =
-                    ECmMdhMediaserverSynchronized;
-                iMediaservers[i]->iSystemUpdateId = 0;
-                DecResponsesAndFinishIfReadyL();
-                }
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// Observer callback for upnp utilities
-// Called when wlan connection is lost
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::ConnectionLost()
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::\
-                             ConnectionLost"));
-    iHarvestActive = EFalse;
-    if( iMetadataCollector )
-        {
-        iMetadataCollector->CancelHarvest();
-        }
-    TRAP_IGNORE( iMdhServer.SetServerStateL( ECmMdhServerStateIdle, 
-                                             KErrDisconnected ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmMdhMediaserverContainer::AddHashValueForResponseL
-// ---------------------------------------------------------------------------        
-TInt CCmMdhMediaserverContainer::AddHashValueForResponseL(
-                                                          TInt aMediaServerId, 
-                                                          TInt aSearchIndex, 
-                                                          TInt aItemCount, 
-                                                          const TDesC8& aHash ) 
-    {
-    CCmSearchResponseHash* newHash = CCmSearchResponseHash::NewL( aSearchIndex,
-                                                                  aItemCount,
-                                                                  aHash );
-    CleanupStack::PushL( newHash );
-    TInt errCode = iDbManager->AddHashValue( aMediaServerId, newHash );
-    CleanupStack::PopAndDestroy( newHash );  
-    return errCode;                                                                
-    }
-    
-// ---------------------------------------------------------------------------
-// Gets media server hash values
-// ---------------------------------------------------------------------------
-void CCmMdhMediaserverContainer::HashValuesForMediaServerL( TInt aMediaServerId,
-    RPointerArray<CCmSearchResponseHash>& aHashValues )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::HashValuesForMediaServerL"));
-
-    iDbManager->PrepareQueryCmdL( EHashValueQuery );
-    
-    TInt err = iDbManager->QueryHashValuesL( aMediaServerId, aHashValues );
-
-    return;
-    }
-
-// ---------------------------------------------------------------------------
-// Deletes old hash values
-// ---------------------------------------------------------------------------    
-void CCmMdhMediaserverContainer::DeleteOldHashValuesL( const TInt aMediaserverId,
-    const TInt aSearchIndex )
-    {
-    LOG(_L("[CmMdh Server]\t CCmMdhMediaserverContainer::DeleteOldHashValuesL"));
-    iDbManager->DeleteHashValuesL( aMediaserverId, aSearchIndex );
-    }
-    
-// End of file
-
-