--- /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 );
+ }