upnpavcontroller/upnpavcontrollerserver/src/upnpfiletransfersessionbase.cpp
changeset 0 7f85d04be362
child 30 5ec426854821
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpavcontroller/upnpavcontrollerserver/src/upnpfiletransfersessionbase.cpp	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,261 @@
+/*
+* 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