diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpavcontroller/upnpavcontrollerserver/src/upnpfilesharingactive.cpp --- a/upnpavcontroller/upnpavcontrollerserver/src/upnpfilesharingactive.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,246 +0,0 @@ -/* -* Copyright (c) 2006 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: AO for file sharing operations -* -*/ - - - - - - -// INCLUDE FILES -// upnp stack api -#include -#include - -// upnpframework / avcontroller helper api -#include "upnpconstantdefs.h" // for upnp-specific stuff -#include "upnpitemutility.h" // for GetResElements - -// upnpframework / internal api's -#include "upnpsecaccesscontroller.h" - -// avcontroller internal -#include "upnpfilesharingactive.h" - -_LIT( KComponentLogfile, "upnpavcontrollerserver.txt"); -#include "upnplog.h" - - -// ======== MEMBER FUNCTIONS ======== - -// -------------------------------------------------------------------------- -// CUPnPFileSharingActive::NewL -// See upnpfilesharingactive.h -// -------------------------------------------------------------------------- -CUPnPFileSharingActive* CUPnPFileSharingActive::NewL() - { - CUPnPFileSharingActive* self = new (ELeave) CUPnPFileSharingActive(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// -------------------------------------------------------------------------- -// CUPnPFileSharingActive::CUPnPFileSharingActive -// See upnpfilesharingactive.h -// -------------------------------------------------------------------------- -CUPnPFileSharingActive::CUPnPFileSharingActive(): - CActive( EPriorityStandard )//, - { - CActiveScheduler::Add( this ); - } - -// -------------------------------------------------------------------------- -// CUPnPFileSharingActive::~CUPnPFileSharingActive -// See upnpfilesharingactive.h -// -------------------------------------------------------------------------- -CUPnPFileSharingActive::~CUPnPFileSharingActive() - { - Cancel(); - delete iFileSharing; - } - -// -------------------------------------------------------------------------- -// CUPnPFileSharingActive::ConstructL -// See upnpfilesharingactive.h -// -------------------------------------------------------------------------- -void CUPnPFileSharingActive::ConstructL() - { - __LOG( "CUPnPFileSharingActive::ConstructL" ); - - iFileSharing = CUpnpFileSharing::NewL(); - } - -// -------------------------------------------------------------------------- -// CUPnPFileSharingActive::RunL -// See upnpfilesharingactive.h -// -------------------------------------------------------------------------- -void CUPnPFileSharingActive::RunL() - { - CActiveScheduler::Stop(); - } - -// -------------------------------------------------------------------------- -// CUPnPFileSharingActive::DoCancel -// See upnpfilesharingactive.h -// -------------------------------------------------------------------------- -void CUPnPFileSharingActive::DoCancel() - { - __LOG( "CUPnPFileSharingActive::DoCancel" ); - } - -// -------------------------------------------------------------------------- -// CUPnPFileSharingActive::RunError -// See upnpfilesharingactive.h -// -------------------------------------------------------------------------- -TInt CUPnPFileSharingActive::RunError( TInt /*aError*/ ) - { - - return KErrNone; - } - -// -------------------------------------------------------------------------- -// CUPnPFileSharingActive::ShareItemL -// See upnpfilesharingactive.h -// -------------------------------------------------------------------------- -void CUPnPFileSharingActive::ShareItemL( CUpnpItem& aItem ) - { - __LOG( "CUPnPFileSharingActive::ShareItemL" ); - - TInt status = KErrNone; - - // Allow access to the files listed in res-elements - SetAccesstoItemResourcesL( aItem, ETrue ); - - // Share the item - TRAP( status, - iFileSharing->ShareItemL( KContainerIdRoot, aItem, iStatus ) ); - if( status == KErrNone ) - { - SetActive(); - CActiveScheduler::Start(); - status = iStatus.Int(); - } - - // If the sharing failed - if( status != KErrNone ) - { - // Deny access to the files listed in res-elements - SetAccesstoItemResourcesL( aItem, EFalse ); - } - - // Leave if the was an error - if( status != KErrNone ) - { - User::Leave( status ); - } - - __LOG( "CUPnPFileSharingActive::ShareItemL - end" ); - } - -// -------------------------------------------------------------------------- -// CUPnPFileSharingActive::UnShareItemL -// See upnpfilesharingactive.h -// -------------------------------------------------------------------------- -void CUPnPFileSharingActive::UnShareItemL( const TDesC8& aId ) - { - __LOG( "CUPnPFileSharingActive::ConstructL" ); - - TLex8 lex( aId ); - TInt id; - User::LeaveIfError( lex.Val( id ) ); - TInt status = KErrNone; - - // Get the shared items data via Metadata API - CUpnpItem* item = CUpnpItem::NewL(); - CleanupStack::PushL( item ); - iFileSharing->GetSharedItemL( id, *item, iStatus ); - SetActive(); - CActiveScheduler::Start(); - status = iStatus.Int(); - - // If the item's metadata was resolved succesfully - if( status == KErrNone ) - { - // Unshare the item - TRAP( status, iFileSharing->UnshareItemL( id, iStatus ) ); - if( status == KErrNone ) - { - SetActive(); - CActiveScheduler::Start(); - status = iStatus.Int(); - } - } - - // If the unsharing succeeded - if( status == KErrNone ) - { - // Deny access to the files listed in res-elements - SetAccesstoItemResourcesL( *item, EFalse ); - } - - // Clean up - CleanupStack::PopAndDestroy( item ); - item = NULL; - - // Leave if error - if( status != KErrNone ) - { - User::LeaveIfError( status ); - } - - __LOG( "CUPnPFileSharingActive::UnShareItemL - end" ); - } - -// -------------------------------------------------------------------------- -// CUPnPFileSharingActive::SetAccesstoItemResourcesL -// See upnpfilesharingactive.h -// -------------------------------------------------------------------------- -void CUPnPFileSharingActive::SetAccesstoItemResourcesL( - CUpnpItem& aItem, - TBool aAccessAllowed ) - { - __LOG( "CUPnPFileSharingActive::SetAccesstoItemResourcesL" ); - - // Create security access controller - CUpnpSecAccessController* accessController = - CUpnpSecAccessController::NewL(); - CleanupStack::PushL( accessController ); - - // Get all filenames and set the access for those. - RUPnPElementsArray resElements; - UPnPItemUtility::GetResElements( aItem, resElements ); - for( TInt i=0; iAddAllowedFile( resElements[i]->FilePath() ); - } - else - { - accessController->RemoveAllowedFile( - resElements[i]->FilePath() ); - } - } - - // Clean up - resElements.Close(); - CleanupStack::PopAndDestroy( accessController ); - accessController = NULL; - } - -// End of file