fotaapplication/fotaserver/FotaServer/src/fotaSrvSession.cpp
branchRCL_3
changeset 25 b183ec05bd8c
parent 24 13d7c31c74e0
child 26 19bba8228ff0
--- a/fotaapplication/fotaserver/FotaServer/src/fotaSrvSession.cpp	Thu Aug 19 10:44:50 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,458 +0,0 @@
-/*
-* Copyright (c) 2005 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:   fotaengines server side session
-*
-*/
-
-
-
-// INCLUDE FILES
-#include "FotasrvSession.h"
-#include "FotaSrvDebug.h"
-#include <eikenv.h>
-#include <eikappui.h>
-#include <s32mem.h>
-#include <e32base.h>
-#include <centralrepository.h>
-#include "FotaServer.h"
-#include "FotaSrvApp.h"
-// ============================= MEMBER FUNCTIONS ============================
-
-class CFotaServer;
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::CheckClientSecureIdL 
-// Returns True if caller is syncml framework. False for fotasrv.
-// Leaves if client is unknown
-// ---------------------------------------------------------------------------
-//
-CFotaSrvSession::TClient CFotaSrvSession::CheckClientSecureIdL (
-                                                  const RMessage2& aMessage)
-    {
-    //TClient     client(EUnknown);
-    TUid    dmhostserver1   = TUid::Uid( KDMHostServer1Uid );
-    TUid    fota            = TUid::Uid( KFotaServerUid );
-    TUid    omadmappui      = TUid::Uid( KOmaDMAppUid );
-    TUid    starter         = TUid::Uid( KStarterUid );
-	TUid	fscheduler		= TUid::Uid( KFotaScheduler );
-	TUid	fms				= TUid::Uid( KFMSServerUid );
-	TUid    softwarechecker = TUid::Uid( 0x2000BB96 );    
-	TUid    softwarecheckerbackground = TUid::Uid( 0x2000BB97 );    
-   TUid    testapp =        TUid::Uid(  0x102073E4); 
-
-  TUid    iadclient = TUid::Uid( 0x2000F85A ); 
-
-	// Syncml
-	if ( aMessage.SecureId() == dmhostserver1.iUid )
-		{
-		FLOG(_L("[CFotaSrvSession] CheckClientSecureIdL client is \
-		DmHostserver!"));
-		return EDMHostServer;
-		}
-
-	// OmaDMAPpui
-	if ( aMessage.SecureId() == omadmappui.iUid )
-		{
-		FLOG(_L("[CFotaSrvSession] CheckClientSecureIdL client is \
-		omadmappui!"));
-		return EOMADMAppUi;
-		}
-
-	// Fotaserver
-	if ( aMessage.SecureId() == fota.iUid ) 
-		{
-		FLOG(_L("[CFotaSrvSession] CheckClientSecureIdL client is \
-		fotaserver!"));
-		return EFotaServer;
-		}
-
-	// Starter
-	if ( aMessage.SecureId() == starter.iUid )
-		{
-		return EStarter;
-		}
-
-
-
-	// Software Checker app
-	if ( aMessage.SecureId() == softwarechecker.iUid || aMessage.SecureId() == iadclient.iUid)
-        {
-        return ESoftwareChecker;
-        }
-
-	// Software Checker Background app
-	if ( aMessage.SecureId() == softwarecheckerbackground.iUid )
-        {
-        return ESoftwareCheckerBackground;
-        }
-
-
-// *3* <-        
-
-
-	// Tester app for testing purp. 
-	if ( aMessage.SecureId() == 0x0323231 || aMessage.SecureId() == testapp.iUid)
-		{
-		return EFotaTestApp;
-		}
-	if ( aMessage.SecureId() == fms.iUid )
-		{
-		return EFMSServer;
-		}
-	// schedulehandler
-	if ( aMessage.SecureId() == fscheduler.iUid)
-		{
-		return EFotaTestApp;
-		}
-
-	FLOG(_L("[CFotaSrvSession] CheckClientSecureIdL client 0x%X is unknown \
-	(msg %d), bailing out"),aMessage.SecureId().iId, aMessage.Function());
-	User::Leave( KErrAccessDenied );    
-	return EFotaTestApp; // compiler warning otherwise
-	}
-
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::CFotaSrvSession
-// ---------------------------------------------------------------------------
-//
-CFotaSrvSession::CFotaSrvSession( )
-	{
-	FLOG( _L( "CFotaSrvSession::CFotaSrvSession( )" ) );
-	iError =  KErrNone;
-	//iDoc = CEikonEnv::Static()->EikAppUi()->Document();
-	}
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::~CFotaSrvSession
-// ---------------------------------------------------------------------------
-//
-CFotaSrvSession::~CFotaSrvSession()
-{
-}
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::CreateL
-// ---------------------------------------------------------------------------
-//
-void CFotaSrvSession::CreateL()
-	{
-	FLOG( _L( "CFotaSrvSession::CreateL() >>" ) );
-	CAknAppServiceBase::CreateL();		
-	FLOG( _L( "CFotaSrvSession::CreateL() <<" ) );
-	}
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::ServiceL
-// Handle client request
-// ---------------------------------------------------------------------------
-//
-void CFotaSrvSession::ServiceL(const RMessage2& aMessage)
-	{
-	TInt        err(KErrNone);
-	TInt        pkgid = 0;
-	TPackageState       state;
-	RThread clt; aMessage.ClientL(clt); 
-	TFullName cltnm = clt.FullName();
-	FLOG(_L( "CFotaSrvSession::ServiceL      %d   serving for %S?" )
-			,aMessage.Function(), &cltnm );
-
-	TInt cmd = aMessage.Function();
-	if(( cmd!= EGetState ) && (cmd!= EGetResult ))
-	{
-		TInt fotaValue(1);    
-  	CRepository* centrep( NULL);
-  	TUid uidValue = {0x101F9A08}; // KCRFotaAdapterEnabled
-  	centrep = CRepository::NewL( uidValue); 
-  	if(centrep )
-  	{     
-  		FLOG(_L("centralrepository found "));
-    	centrep->Get( 1 , fotaValue ); // KCRFotaAdapterEnabled     
-    	delete centrep;
-  	}
-  	if ( ! fotaValue )
-  	{
-  		User::Leave( KErrNotSupported );   
-  	}
-  }
-  
-	TClient client = CheckClientSecureIdL ( aMessage );
-
-	switch( aMessage.Function() )
-	{
-	case EFotaFirstCommand:
-		{
-		}
-		aMessage.Complete(KErrNone);
-		break;
-	case EFotaDownload:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL DOWNLOAD") );
-		TDownloadIPCParams          ipc;
-		TPckg<TDownloadIPCParams>   pkg(ipc);
-		aMessage.Read (0, pkg);
-		TInt        deslen  = aMessage.GetDesLengthL (1);
-		HBufC8*     urlbuf  = HBufC8::NewLC(deslen);
-		TPtr8       urlptr  = urlbuf->Des();
-		aMessage.Read (1,urlptr);
-		FotaServer()->DownloadL(ipc,urlptr);
-		CleanupStack::PopAndDestroy(); // urlbuf
-		aMessage.Complete( KErrNone );
-		break;
-		}
-	case EFotaUpdate:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL UPDATE" ));
-		TDownloadIPCParams          ipc;
-		TPckg<TDownloadIPCParams>   pkg(ipc);
-		aMessage.Read( 0 ,pkg );
-		FotaServer()->SetInstallUpdateClientL(client);
-		// If update started from omadmappui, no alert should be sent if 
-		// update is cancelled
-		if ( client == EOMADMAppUi )
-			{
-			ipc.iSendAlert = EFalse;
-			}
-		FotaServer()->UpdateL(ipc);
-		aMessage.Complete( KErrNone );	
-		break;
-		}
-	case EFotaDownloadAndUpdate:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL DOWNLOADANDUPDATE" ));
-		TDownloadIPCParams          ipc;
-		TPckg<TDownloadIPCParams>   pkg(ipc);
-		aMessage.Read (0, pkg);
-		TInt        deslen  = aMessage.GetDesLengthL (1);
-		HBufC8*     urlbuf  = HBufC8::NewLC(deslen);
-		TPtr8       urlptr  = urlbuf->Des();
-		aMessage.Read (1,urlptr);
-		FotaServer()->DownloadAndUpdateL(ipc,urlptr);
-		CleanupStack::PopAndDestroy( urlbuf );
-		aMessage.Complete( KErrNone );	
-		}
-		break;
-	case EFotaOpenUpdatePackageStore:
-		{
-		FLOG(_L("CFotaSrvSession::ServiceL OPENUPDATEPACKAGESTORE"));
-		FotaServer()->OpenUpdatePackageStoreL( aMessage );
-		aMessage.Complete( KErrNone );
-		}
-		break;
-
-	case EFotaGetDownloadUpdatePackageSize:
-		{
-		TInt dlsize = 0;
-		TInt totalsize = 0;
-		pkgid = aMessage.Int0();
-		//err is already KErrNone.
-		FotaServer()->GetDownloadUpdatePackageSizeL( pkgid, dlsize, totalsize );
-		TPckg<TInt> pkg2(dlsize);
-		TPckg<TInt> pkg3 (totalsize);
-		aMessage.Write (1,pkg2);
-		aMessage.Write (2,pkg3);
-		aMessage.Complete( KErrNone );
-		}
-		break;
-
-	case EFotaSendChunk:
-		{
-		FotaServer()->ReadChunkL( aMessage.Int0(),iError );
-		iError =  KErrNone;
-		aMessage.Complete( KErrNone );
-		}
-		break;
-	case EFotaReleaseChunkHandle:
-		{
-		FLOG(_L("CFotaSrvSession::ServiceL  EFotaReleaseChunkHandle"));
-		FotaServer()->UpdateDBdataL();
-		aMessage.Complete( KErrNone );
-		}
-		break;
-
-	case EFotaTryResumeDownload:
-		{
-		if ( (client == EOMADMAppUi) || (client == ESoftwareChecker) )
-			{
-			FotaServer()->TryResumeDownloadL(ETrue); // user initiated
-			aMessage.Complete( KErrNone );				
-			}
-		else if (client == EFMSServer)
-			{
-			FotaServer()->TryResumeDownloadL(EFalse); // fms initiated
-			aMessage.Complete( KErrNone );
-			}
-		else if(client == 	EFotaTestApp)
-		{
-			FotaServer()->TryResumeDownloadL(EFalse); // fms initiated
-			aMessage.Complete( KErrNone );
-		}
-		else
-			{
-			aMessage.Complete ( KErrAccessDenied );
-			}
-		}
-		break;	
-
-	case EUpdatePackageDownloadComplete:
-		{
-		FLOG(_L("CFotaSrvSession::ServiceL \
-		UPDATEPACKAGEDOWNLOADCOMPLETE"));
-		// If caller is syncmlDM framework, download is largeobject 
-		// download. If caller is other, download is Oma DL/http
-   
-		TBool largeobj = (client == EDMHostServer)? ETrue : EFalse;
-		pkgid = aMessage.Int0();
-		FotaServer()->UpdatePackageDownloadCompleteL(largeobj
-				, pkgid);
-		aMessage.Complete( KErrNone );
-		}
-		break;
-	case EDeletePackage:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL DELETEPACKAGE") );
-		pkgid = aMessage.Int0();
-		FotaServer()->DeletePackageL(pkgid);
-		aMessage.Complete( KErrNone );
-		}
-		break;
-	case EGetState:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL GETSTATE >>" ));
-		pkgid = aMessage.Int0();
-		
-		// NSC_DM: commented out 2 strings below, otherwise it crashes from NSC with Kern-Exec 44 -> 
-		if (client != EOMADMAppUi && client != ESoftwareChecker && client != ESoftwareCheckerBackground && client != EFotaTestApp && pkgid < 0)
-			aMessage.Complete (KErrArgument);
-		//	<-		
-		state = FotaServer()->GetStateL(pkgid);
-		//Protecting state 25. If any client other than DM UI queries for state, 25 should not be sent and 
-		//20 will be sent instead.
-		if ( (client != EOMADMAppUi && client != ESoftwareChecker) && state.iState == RFotaEngineSession::EDownloadProgressingWithResume)
-			state.iState = RFotaEngineSession::EDownloadProgressing;
-		FLOG(_L( "CFotaSrvSession::ServiceL GETSTATE << %d" )
-				,state.iState);
-		TPckg<RFotaEngineSession::TState>   pkg2(state.iState);
-		aMessage.Write (1, pkg2);
-		aMessage.Complete (KErrNone);
-		}
-		break;
-	case EGetResult:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL GETRESULT >>" ));
-		pkgid = aMessage.Int0();
-		state = FotaServer()->GetStateL(pkgid);
-		TPckg<TInt>     pkg2(state.iResult);
-		FLOG(_L( "CFotaSrvSession::ServiceL GETRESULT << %d" )
-				,state.iResult);
-		aMessage.Write (1, pkg2);
-		aMessage.Complete (err);
-		break;
-		}
-	case EIsPackageStoreSizeAvailable:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL \
-		ISPACKAGESTORESIZEAVAILABLE" ));
-
-		TInt size   = aMessage.Int0();
-		TBool avail;
-		// In UI evolution, size of file will be checked by fotaserver itself. Keep following
-		// until codhandler skips size check itself 
-		//#ifdef RD_OMADMAPPUI_UI_EVOLUTION
-		if ( client == EFotaServer )	avail = ETrue;
-		else	avail = FotaServer()->IsPackageStoreSizeAvailableL( size );
-		/*#else
-						avail = FotaServer()->IsPackageStoreSizeAvailableL( size );
-			#endif*/
-		TPckg<TBool>     pavail(avail);
-		aMessage.Write (1, pavail);
-		aMessage.Complete (KErrNone);
-		break;
-		}
-
-	case EGetUpdatePackageIds:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL EGETUPDATEPACKAGEIDS" ));
-		TPkgIdList                      pkgids;
-		FotaServer()->GetUpdatePackageIdsL(pkgids);
-		TPckg<TPkgIdList>               pkgids_pkg(pkgids);
-		aMessage.Write(0, pkgids_pkg);
-		aMessage.Complete(KErrNone);
-		}
-		break;
-
-	case EGetUpdateTimestamp:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL EGETUPDATETIMESTAMP" ));
-		TBuf16<15>        timestamp;
-		FotaServer()->GetUpdateTimeStampL(timestamp);
-		aMessage.Write(0, timestamp );
-		aMessage.Complete(KErrNone);
-		}
-		break;
-
-	case EGenericAlertSentForPackage:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL EGENERICALERTSENT FOR PKGID" ));
-		TInt pkgid = aMessage.Int0();
-		FotaServer()->GenericAlertSentL( pkgid );
-		aMessage.Complete( err );
-		}
-		break;
-
-	case EScheduledUpdate:
-		{
-		FLOG(_L( "CFotaSrvSession::ServiceL ESCHEDULEDUPDATE" ));
-		TFotaScheduledUpdate           sched(-1,-1);
-		TPckg<TFotaScheduledUpdate>    p(sched);
-		aMessage.Read (0, p);
-		FotaServer()->SetInstallUpdateClientL(client);
-		FLOG(_L(" pkgid: %d   scheduleid:%d"), sched.iPkgId,sched.iScheduleId);
-		FotaServer()->ScheduledUpdateL( sched );
-		aMessage.Complete( KErrNone );
-		}
-		break;
-
-	default:
-		{
-		CAknAppServiceBase::ServiceL( aMessage );
-		}
-		break;
-	}		
-	}
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::ServiceError
-// ---------------------------------------------------------------------------
-//
-void CFotaSrvSession::ServiceError( const RMessage2& aMessage,TInt aError )
-	{
-	FLOG(_L( "CFotaSrvSession::ServiceError %d" ),aError );
-	iError = aError;
-	CFotaServer* f = FotaServer();
-	TRAPD(err2, f->iParentApp->SetUIVisibleL ( EFalse,ETrue ) );
-	if(err2); // remove compiler warning
-	CAknAppServiceBase::ServiceError( aMessage, aError );
-	}
-
-// ---------------------------------------------------------------------------
-// CFotaSrvSession::FotaServer
-// Helper function
-// ---------------------------------------------------------------------------
-//
-
-CFotaServer*  CFotaSrvSession::FotaServer() const
-{
-return (CFotaServer* ) Server();
-}