ncdengine/engine/transport/src/catalogshttpsessionimpl.cpp
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/engine/transport/src/catalogshttpsessionimpl.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,431 @@
+/*
+* 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:  
+*
+*/
+
+
+#include "catalogshttpconfig.h"
+#include "catalogshttpsessionimpl.h"
+#include "catalogstransporttypes.h"
+#include "catalogshttpdownloadmanagerimpl.h"
+#include "catalogshttpoperation.h"
+#include "catalogshttptransactionmanagerimpl.h"
+#include "catalogsdebug.h"
+#include "catalogstransportimpl.h"
+#include "catalogshttpconnectionmanager.h"
+#include "catalogsconnectioneventsink.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Creator
+// ---------------------------------------------------------------------------
+//
+CCatalogsHttpSession* CCatalogsHttpSession::NewL( 
+    TInt32 aSessionId, 
+    CCatalogsTransport& aOwner, 
+    MCatalogsHttpSessionManager& aSessionManager,
+    TBool aCleanupSession )
+    {
+    DLTRACEIN( ( "" ) );
+    CCatalogsHttpSession* self = new ( ELeave ) CCatalogsHttpSession(
+        aSessionId, aOwner, aSessionManager );
+    CleanupStack::PushL( self );
+    self->ConstructL( aSessionManager, aCleanupSession );
+    CleanupStack::Pop( self );
+    DLTRACEOUT( ( "self: %X", self ) );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CCatalogsHttpSession::~CCatalogsHttpSession()
+    {
+    DLTRACEIN( ( "" ) );
+    // disconnect network connection if no clients use it
+    TRAP_IGNORE( iSessionManager.DisconnectL() );
+    delete iDownloadMgr;
+    delete iTransactionMgr;
+    delete iConnectionMgr;
+    delete iConnectionEventSink;
+    
+    if ( iOwner ) 
+        {        
+        iOwner->RemoveSession( this );
+        }
+    
+    DLTRACEOUT( ( "" ) );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Add a reference
+// ---------------------------------------------------------------------------
+//
+TInt CCatalogsHttpSession::AddRef()
+    {
+    iRefCount++;
+    return iRefCount;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Release a reference
+// ---------------------------------------------------------------------------
+//
+TInt CCatalogsHttpSession::Release()
+    {
+    iRefCount--;
+    if ( !iRefCount ) 
+        {
+        delete this;
+        return 0;
+        }
+    return iRefCount;
+    }
+        
+
+// ---------------------------------------------------------------------------
+// Reference count
+// ---------------------------------------------------------------------------
+//        
+TInt CCatalogsHttpSession::RefCount() const
+    {
+    return iRefCount;
+    }
+
+
+
+// ---------------------------------------------------------------------------
+// Session id getter
+// ---------------------------------------------------------------------------
+//
+TInt32 CCatalogsHttpSession::SessionId() const
+    {
+    return iSessionId;
+    }
+        
+        
+// ---------------------------------------------------------------------------
+// Session type getter
+// ---------------------------------------------------------------------------
+//
+TInt CCatalogsHttpSession::SessionType() const
+    {
+    return KCatalogsTransportHttpInterface;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Download creator
+// ---------------------------------------------------------------------------
+//
+MCatalogsHttpOperation* CCatalogsHttpSession::CreateDownloadL( 
+    const TDesC16& aUrl, TBool aStart, MCatalogsHttpObserver* aObserver)
+    {        
+    return iDownloadMgr->CreateDownloadL( aUrl, aStart, aObserver );    
+    }
+
+// ---------------------------------------------------------------------------
+// Download creator
+// ---------------------------------------------------------------------------
+//
+MCatalogsHttpOperation* CCatalogsHttpSession::CreateDownloadL( 
+    const TDesC8& aUrl, TBool aStart, MCatalogsHttpObserver* aObserver)
+    {        
+    return iDownloadMgr->CreateDownloadL( aUrl, aStart, aObserver );    
+    }
+
+
+// ---------------------------------------------------------------------------
+// Transaction creator
+// ---------------------------------------------------------------------------
+//
+MCatalogsHttpOperation* CCatalogsHttpSession::CreateTransactionL( 
+    const TDesC16& aUrl, MCatalogsHttpObserver* aObserver )
+    {
+    return iTransactionMgr->CreateTransactionL( aUrl, aObserver );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Transaction creator
+// ---------------------------------------------------------------------------
+//
+MCatalogsHttpOperation* CCatalogsHttpSession::CreateTransactionL( 
+    const TDesC8& aUrl, MCatalogsHttpObserver* aObserver )
+    {
+    return iTransactionMgr->CreateTransactionL( aUrl, aObserver );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Download transaction creator
+// ---------------------------------------------------------------------------
+//
+MCatalogsHttpOperation* CCatalogsHttpSession::CreateDlTransactionL( 
+    const TDesC8& aUrl, MCatalogsHttpObserver& aObserver,
+    const CCatalogsHttpConfig& aConfig )
+    {
+    return iTransactionMgr->CreateDlTransactionL( aUrl, aObserver, aConfig );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Download getter
+// ---------------------------------------------------------------------------
+//
+MCatalogsHttpOperation* CCatalogsHttpSession::Download( 
+    const TCatalogsTransportOperationId& aId ) const
+    {
+    return iDownloadMgr->Download( aId );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Transaction getter
+// ---------------------------------------------------------------------------
+//
+MCatalogsHttpOperation* CCatalogsHttpSession::Transaction( 
+    const TCatalogsTransportOperationId& aId ) const
+    {    
+    return iTransactionMgr->Transaction( aId );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Download array getter
+// ---------------------------------------------------------------------------
+//
+const RCatalogsHttpOperationArray& 
+    CCatalogsHttpSession::CurrentDownloads() const
+    {
+    return iDownloadMgr->CurrentDownloads();
+    }
+        
+
+// ---------------------------------------------------------------------------
+// Restored downloads getter
+// ---------------------------------------------------------------------------
+//
+const RCatalogsHttpOperationArray&
+    CCatalogsHttpSession::RestoredDownloads() const
+    {
+    return iDownloadMgr->RestoredDownloads();
+    }
+        
+
+// ---------------------------------------------------------------------------
+// Moves a restored download to current downloads
+// ---------------------------------------------------------------------------
+//
+TInt CCatalogsHttpSession::MoveRestoredDlToCurrentDls( 
+    MCatalogsHttpOperation& aDownload )
+    {
+    return iDownloadMgr->MoveRestoredDlToCurrentDls( aDownload );
+    }
+    
+// ---------------------------------------------------------------------------
+// Transaction array getter
+// ---------------------------------------------------------------------------
+//
+const RCatalogsHttpOperationArray& 
+    CCatalogsHttpSession::CurrentTransactions() const
+    {
+    return iTransactionMgr->CurrentTransactions();
+    }
+
+
+// ---------------------------------------------------------------------------
+// Cancel all operations
+// ---------------------------------------------------------------------------
+//
+void CCatalogsHttpSession::CancelAllOperations()
+    {
+    CancelAllDownloads();
+    CancelAllTransactions();    
+    }
+
+
+
+// ---------------------------------------------------------------------------
+// Cancel all operations
+// ---------------------------------------------------------------------------
+//
+void CCatalogsHttpSession::NotifyCancelAllOperations()
+    {
+    iSessionManager.SetResumeMode( EFalse );
+    iTransactionMgr->NotifyCancelAll();
+    iDownloadMgr->NotifyCancelAll();    
+    iSessionManager.SetResumeMode( ETrue );
+    }
+
+// ---------------------------------------------------------------------------
+// Cancel all downloads
+// ---------------------------------------------------------------------------
+//
+void CCatalogsHttpSession::CancelAllDownloads()
+    {
+    // Disable operation resuming during cancel so that ops are not
+    // unnecessarily resumed
+    iSessionManager.SetResumeMode( EFalse );
+    iDownloadMgr->CancelAll();    
+    iSessionManager.SetResumeMode( ETrue );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Cancel all transactions
+// ---------------------------------------------------------------------------
+//
+void CCatalogsHttpSession::CancelAllTransactions()
+    {
+    // Disable operation resuming during cancel so that ops are not
+    // unnecessarily resumed
+    iSessionManager.SetResumeMode( EFalse );
+    iTransactionMgr->CancelAll();
+    iSessionManager.SetResumeMode( ETrue );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Deletes restored downloads
+// ---------------------------------------------------------------------------
+//
+void CCatalogsHttpSession::DeleteRestoredDownloads()
+    {
+    iDownloadMgr->DeleteRestoredDownloads();
+    }
+    
+// ---------------------------------------------------------------------------
+// Transaction configuration getter
+// ---------------------------------------------------------------------------
+//
+MCatalogsHttpConfig& 
+    CCatalogsHttpSession::DefaultTransactionConfig() const
+    {    
+    return iTransactionMgr->DefaultConfig();
+    }
+
+
+// ---------------------------------------------------------------------------
+// Download configuration getter
+// ---------------------------------------------------------------------------
+//
+MCatalogsHttpConfig& CCatalogsHttpSession::DefaultDownloadConfig() const
+    {
+    return iDownloadMgr->DefaultConfig();
+    }
+  
+        
+// ---------------------------------------------------------------------------
+// Set default accesspoint for downloads and transactions
+// ---------------------------------------------------------------------------
+//
+void CCatalogsHttpSession::SetDefaultConnectionMethod( 
+    const TCatalogsConnectionMethod& aMethod )
+    {
+    iDownloadMgr->DefaultConfig().SetConnectionMethod( aMethod );
+    iTransactionMgr->DefaultConfig().SetConnectionMethod( aMethod );
+
+    iConnectionMgr->SetDefaultConnectionMethod( aMethod );
+    }
+// ---------------------------------------------------------------------------
+// SetOwner
+// ---------------------------------------------------------------------------
+//
+void CCatalogsHttpSession::SetOwner( CCatalogsTransport* aOwner )
+    {
+    iOwner = aOwner;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// Connection manager getter
+// ---------------------------------------------------------------------------
+//
+CCatalogsHttpConnectionManager& CCatalogsHttpSession::ConnectionManager()
+    {
+    DASSERT( iConnectionMgr );
+    return *iConnectionMgr;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Session options setter
+// ---------------------------------------------------------------------------
+//
+void CCatalogsHttpSession::SetOptions( TUint32 aOptions )
+    {
+    DLTRACEIN(("aOptions: %d", aOptions));
+    iDownloadMgr->DefaultConfig().SetOptions( aOptions );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CCatalogsHttpSession::CCatalogsHttpSession( TInt32 aSessionId, 
+    CCatalogsTransport& aOwner, 
+    MCatalogsHttpSessionManager& aSessionManager ) : 
+    iOwner( &aOwner ), 
+    iSessionManager( aSessionManager ),
+    iSessionId( aSessionId ),
+    iRefCount( 1 )
+    {
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// 2nd phase constructor
+// ---------------------------------------------------------------------------
+//
+void CCatalogsHttpSession::ConstructL( MCatalogsHttpSessionManager& aManager,
+    TBool aCleanupSession )
+    {
+    DLTRACEIN(("this=%X",this));    
+    iConnectionMgr = CCatalogsHttpConnectionManager::NewL( *this );
+    
+    iTransactionMgr = CCatalogsHttpTransactionManager::NewL( 
+        aManager, 
+        *this, 
+        *iConnectionMgr, 
+        iSessionId );
+    DLINFO(("transaction mgr ok"));
+    
+    iDownloadMgr = CCatalogsHttpDownloadManager::NewL( 
+        aManager, 
+        *this,
+        iSessionId,
+        *iTransactionMgr, 
+        *iConnectionMgr, 
+        aCleanupSession );
+    
+    // This uid must be the client side process SID. We assume that
+    // the session id is the same as client side SID.
+    TUid uid = TUid::Uid( iSessionId );
+    iConnectionEventSink = CCatalogsConnectionEventSink::NewL( uid );
+    DLTRACEOUT((""));
+    }
+
+
+void CCatalogsHttpSession::ReportConnectionStatus( TBool aActive )
+    {
+    DLTRACEIN((""));
+    iConnectionEventSink->ReportConnectionStatus( aActive );
+    }