Fixed AVController, it was accidentally set to search only for renderers. Now also servers are added to device list. Also some minor changes in package definition xml and platform API xml definition files.
/*
* 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: server impl. of session against media server
*
*/
// INTERNAL INCLUDES
#include "upnpfiletransfersessionbase.h"
#include "upnpavdeviceextended.h"
#include "upnpavcontrollerserver.h"
#include "upnpdevicerepository.h"
#include "upnpfiletransferitem.h"
_LIT( KComponentLogfile, "upnpavcontrollerserver.txt");
#include "upnplog.h"
// ======== MEMBER FUNCTIONS ========
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::CUPnPFileTransferSessionBase
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
CUPnPFileTransferSessionBase::CUPnPFileTransferSessionBase(
CUpnpAVControllerServer& aServer, TInt aSessionId ) :
iServer( aServer ),
iSessionId( aSessionId )
{
__LOG( "CUPnPFileTransferSessionBase::CUPnPFileTransferSessionBase" );
}
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::~CUPnPFileTransferSessionBase
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
CUPnPFileTransferSessionBase::~CUPnPFileTransferSessionBase()
{
__LOG( "CUPnPFileTransferSessionBase::~CUPnPFileTransferSessionBase" );
delete iDevice;
iTransferItems.Close();
iEventQueu.Close();
if( iEventMsg )
{
iEventMsg->Complete( KErrCancel );
delete iEventMsg;
}
__LOG( "CUPnPFileTransferSessionBase::~CUPnPFileTransferSessionBase \
- end" );
}
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::ConstructL
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
void CUPnPFileTransferSessionBase::ConstructL( const TDesC8& aUuid )
{
__LOG( "CUPnPFileTransferSessionBase::ConstructL" );
const RPointerArray<CUpnpAVDeviceExtended>& devList =
iServer.DeviceRepository().DeviceList();
TInt count = devList.Count();
TInt i;
for( i = 0; i < count; i++ )
{
if( devList[ i ]->Uuid() == aUuid )
{
iDevice = CUpnpAVDeviceExtended::NewL( *devList[ i ] );
}
}
if( !iDevice )
{
User::Leave( KErrNotFound );
}
}
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::SessionId
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
TInt CUPnPFileTransferSessionBase::SessionId() const
{
__LOG( "CUPnPFileTransferSessionBase::SessionId" );
return iSessionId;
}
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::Uuid
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
const TDesC8& CUPnPFileTransferSessionBase::Uuid() const
{
__LOG( "CUPnPFileTransferSessionBase::Uuid" );
return iDevice->Uuid();
}
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::CheckIfKeyExists
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
TBool CUPnPFileTransferSessionBase::CheckIfKeyExists( TInt aKey )
{
__LOG( "CUPnPFileTransferSessionBase::CheckIfKeyExists" );
TBool retVal = EFalse;
TInt count = iTransferItems.Count();
for( TInt i = 0; i < count; i++ )
{
if( iTransferItems[ i ].iKey == aKey )
{
retVal = ETrue;
i = count;
}
}
return retVal;
}
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::CheckIfKeyExists
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
TBool CUPnPFileTransferSessionBase::CheckIfKeyExists( TInt aKey,
TInt& aIndex )
{
__LOG( "CUPnPFileTransferSessionBase::CheckIfKeyExists" );
TBool retVal = EFalse;
TInt count = iTransferItems.Count();
for( aIndex = 0; aIndex < count; aIndex++ )
{
if( iTransferItems[ aIndex ].iKey == aKey )
{
retVal = ETrue;
break;
}
}
return retVal;
}
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::FindItemByKey
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
TInt CUPnPFileTransferSessionBase::FindItemByKey( TUpnpFileTransferEvent&
aItem, TInt aKey )
{
__LOG( "CUPnPFileTransferSessionBase::FindItemByKey" );
TBool retVal = KErrNotFound;
TInt count = iTransferItems.Count();
for( TInt i = 0; i < count; i++ )
{
if( iTransferItems[ i ].iKey == aKey )
{
aItem = iTransferItems[ i ];
retVal = KErrNone;
i = count;
}
}
return retVal;
}
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::FindItemByKey
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
TInt CUPnPFileTransferSessionBase::FindItemByKey( TUpnpFileTransferEvent&
aItem, TInt aKey, TInt& aIndex )
{
__LOG( "CUPnPFileTransferSessionBase::FindItemByKey" );
TBool retVal = KErrNotFound;
TInt count = iTransferItems.Count();
for( aIndex = 0; aIndex < count; aIndex++ )
{
if( iTransferItems[ aIndex ].iKey == aKey )
{
aItem = iTransferItems[ aIndex ];
retVal = KErrNone;
break;
}
}
return retVal;
}
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::ReadTransferItemFromMessageL
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
void CUPnPFileTransferSessionBase::ReadTransferItemFromMessageL(
const RMessage2& aMessage, TInt aSlot, CUpnpFileTransferItem* aItem )
{
__LOG( "CUPnPFileTransferSessionBase::ReadTransferItemFromMessageL" );
// create buffer
TInt len = aMessage.GetDesMaxLength( aSlot );
HBufC8* buf = HBufC8::NewLC( len );
TPtr8 ptr( buf->Des() );
User::LeaveIfError( aMessage.Read( aSlot, ptr ) );
// read stream
RDesReadStream stream( *buf );
CleanupClosePushL( stream );
// internalize object
stream >> *aItem;
// clean up
CleanupStack::PopAndDestroy( &stream );
CleanupStack::PopAndDestroy( buf );
}
// --------------------------------------------------------------------------
// CUPnPFileTransferSessionBase::Complete
// See upnpdownloadsession.h
// --------------------------------------------------------------------------
void CUPnPFileTransferSessionBase::Complete(
const TUpnpFileTransferEvent& aEvent )
{
__LOG( "CUPnPFileTransferSessionBase::Complete" );
if( iEventMsg )
{
__LOG( "Complete" );
__LOG1( "iEvent = %d", aEvent.iEvent );
__LOG1( "iKey = %d", aEvent.iKey );
__LOG1( "iStatus = %d", aEvent.iStatus );
TPckg<TUpnpFileTransferEvent> resp1( aEvent );
iEventMsg->Write( 1, resp1 ); // Write response using slot 1
iEventMsg->Complete( KErrNone );
delete iEventMsg; iEventMsg = NULL;
}
else
{
__LOG( "Complete - Add to queu" );
__LOG1( "iEvent = %d", aEvent.iEvent );
__LOG1( "iKey = %d", aEvent.iKey );
__LOG1( "iStatus = %d", aEvent.iStatus );
iEventQueu.Append( aEvent );
}
}
// End of file