diff -r 000000000000 -r 3ce708148e4d applicationmanagement/client/src/ApplicationManagementClient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applicationmanagement/client/src/ApplicationManagementClient.cpp Thu Dec 17 08:40:12 2009 +0200 @@ -0,0 +1,842 @@ +/* +* Copyright (c) 2000 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: Implementation of Application Management Components +* +*/ + + + + +#include +#include "ApplicationManagementClientServer.h" +#include "ApplicationManagementClient.h" +#include "ApplicationManagementRfs.h" +#include "debug.h" +#include +#include + + +#include + +#include + +using namespace NApplicationManagement; + +// ---------------------------------------------------------------------------------------- +// Server startup code +// ---------------------------------------------------------------------------------------- + +static TInt StartAMServerL() + { + RDEBUG("RApplicationManagement: Starting server..."); + + TInt err = KErrNone; + const TUid nameUid = TUid::Uid(KUikonUidPluginInterfaceNotifiers); + + const TUid appServerUid = TUid::Uid(KAppMgmtServerUid ); + + RApaLsSession apa; + err = apa.Connect(); + User::LeaveIfError(err); + CleanupClosePushL(apa); + + // Get application information + TApaAppInfo info; + + for(TInt i = 20; ((err = apa.GetAppInfo(info, + appServerUid)) == RApaLsSession::EAppListInvalid) && i > 0; i--) + { + User::After(500000); + } + User::LeaveIfError(err); + + TRequestStatus aRequestStatusForRendezvous; + + // Start aplication server + CApaCommandLine* cmdLine = CApaCommandLine::NewLC(); + cmdLine->SetExecutableNameL(info.iFullName); + cmdLine->SetServerRequiredL(nameUid.iUid ); + cmdLine->SetCommandL(EApaCommandBackground); + TThreadId srvid; + err = apa.StartApp(*cmdLine, srvid, &aRequestStatusForRendezvous); + User::LeaveIfError(err); + + User::WaitForRequest(aRequestStatusForRendezvous); + CleanupStack::PopAndDestroy(2, &apa); // cmdLine and apa + + return KErrNone; + } + +EXPORT_C RAppMgmtRfs::RAppMgmtRfs() + { + } +EXPORT_C TInt RAppMgmtRfs::Connect() + { + TInt retry=2; + TVersion ver( KAMVerMajor, KAMVerMinor, KAMVerBuild ); + for (;;) + { + + TInt r; + + const TUid nameUid = TUid::Uid(KUikonUidPluginInterfaceNotifiers); + + const TUid appServerUid = TUid::Uid(KAppMgmtServerUid ); + + _LIT(KServerNameFormat, "%08x_%08x_AppServer"); + TFullName serverName; + serverName.Format(KServerNameFormat, + nameUid, appServerUid); + TRAP(r, ConnectExistingByNameL(serverName) ); + if(r) + { + + r = CreateSession (serverName, ver); + + } + if (r!=KErrNotFound && r!=KErrServerTerminated) + return r; + if (--retry==0) + return r; + TRAP_IGNORE(r=StartAMServerL()); + if (r!=KErrNone && r!=KErrAlreadyExists) + { + return r; + } + } + } + + +EXPORT_C void RAppMgmtRfs::Close() + { + REikAppServiceBase::Close(); //basecall + } + +// New methods +EXPORT_C void RAppMgmtRfs::PerformRfsL() const + { + User::LeaveIfError( SendReceive( EPerformRfs, TIpcArgs() ) ); + } + +TUid RAppMgmtRfs::ServiceUid() const + { + return TUid::Uid( KAMServiceUid); + } + + +EXPORT_C RApplicationManagement::RApplicationManagement() + { + } + +// This is the standard retry pattern for server connection +EXPORT_C TInt RApplicationManagement::Connect( ) + { + TInt retry=2; + TVersion ver( KAMVerMajor, KAMVerMinor, KAMVerBuild ); + for (;;) + { + + TInt r; + + const TUid nameUid = TUid::Uid(KUikonUidPluginInterfaceNotifiers); + + const TUid appServerUid = TUid::Uid(KAppMgmtServerUid ); + + _LIT(KServerNameFormat, "%08x_%08x_AppServer"); + TFullName serverName; + serverName.Format(KServerNameFormat, + nameUid, appServerUid); + TRAP(r, ConnectExistingByNameL(serverName) ); + if(r) + { + + r = CreateSession (serverName, ver); + + } + if (r!=KErrNotFound && r!=KErrServerTerminated) + return r; + if (--retry==0) + return r; + TRAP_IGNORE(r=StartAMServerL()) + if (r!=KErrNone && r!=KErrAlreadyExists) + { + return r; + } + } + } + +EXPORT_C TInt RApplicationManagement::Connect( const TCertInfo &aCertInfo ) + { + TInt r( Connect() ); + if ( r == KErrNone || r == KErrAlreadyExists ) + { + TPckg pkg( aCertInfo ); + r = SendReceive( EAddTrust, TIpcArgs( &pkg ) ); + } + return r; + } + + +EXPORT_C void RApplicationManagement::Close() + { + REikAppServiceBase::Close(); + } + + + +EXPORT_C TUint32 RApplicationManagement::DeliverL( const TDCUserId &aUserId ) const + { + TDeploymentComponent aInfo( KNullDesC8(), KNullDesC8(), KNullDesC8(), EDCSNone ); + TDeploymentComponentIPC pkg( aInfo, KNullDesC8(), aUserId ); + + TPckg pinfo(pkg); + TUint32 id = 0; + TPckg< TUint32 > pid( id ); + const TDesC8& empty = KNullDesC8(); + + TInt err( SendReceive( EDeplCompDeliverStartOperation2, TIpcArgs( &pinfo, &empty, &pid) ) ); + if ( err == KErrNone ) + { + RDEBUG_2( "ApplicationManagementServer: DeliverL start SUCCESS id: %d", id ); + //TPckg pinfo2(aInfo); + + err = SendReceive( EDeplCompDeliverCompleteOperation, TIpcArgs( &pid, &empty, &empty )); + + if ( err == KErrNone ) + { + RDEBUG_2( "ApplicationManagementServer: DeliverL complete SUCCESS id: %d", id ); + err = id; + } + else + { + RDEBUG_2( "ApplicationManagementServer: DeliverL failed2... %d", err); + } + } + else + { + RDEBUG_2("ApplicationManagementServer: DeliverL failed1... %d", err); + } + User::LeaveIfError( err ); + return err; + } + + + +EXPORT_C TInt RApplicationManagement::DeploymentComponent( + TUint32 aInternalId, TDeploymentComponent &aReturnValue ) const + { + TPckg pinfo(aReturnValue); + TPckg< TUint32 > pid( aInternalId ); + TInt err( SendReceive( EDeplCompGetOperation, TIpcArgs( &pid, &pinfo) ) ); + if ( err == KErrNone ) + { + RDEBUG_2( "RApplicationManagement: DeploymentComponent start SUCCESS id: %d", aInternalId ); + } + else + { + RDEBUG_2("RApplicationManagement: DeploymentComponent failed... %d", err); + } + + return err; + } + + +EXPORT_C void RApplicationManagement::DeploymentComponentUserIdL( + TUint32 aInternalId, TDCUserId &aResponse ) const + { + + TPckgC< TUint32 > pid( aInternalId ); + TInt err( SendReceive( EDeplCompGetUserIdOperation, TIpcArgs( &pid, &aResponse) ) ); + if ( err == KErrNone ) + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentUserIdL SUCCESS id: %d", aInternalId ); + } + else + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentUserIdL failed... %d", err); + } + + User::LeaveIfError( err ); + } + + +/** +* @param aInternalId Id of the component to be found +* @param aBuffer a buffer to store results +* @return KErrNone Symbian error code +*/ +EXPORT_C void RApplicationManagement::DeploymentComponentDataL( + TUint32 aInternalId, TDeplCompAttrType aDataType, CBufBase &aBuffer ) const + { + //aBuffer.ResizeL( + TPckg< TUint32 > pid( aInternalId ); + TPckg< TDeplCompAttrType > pdt( aDataType ); + TInt length( 0 ); + TPckg< TInt > plen( length ); + aBuffer.Reset(); + TInt err( KErrNone) ; + if ( aDataType == EDCInstallOptions + || aDataType == EDCMetaData + || aDataType == EDCData + || aDataType == EDCDataMime + || aDataType == EDCMetaDataMime + || aDataType == EDCDownloadURI ) + { + err = SendReceive( EDeplCompGetDataLengthOperation, TIpcArgs( &pid, &pdt, &plen) ) ; + if ( err == KErrNone ) + { + + } + else + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentDataL EDeplCompGetDataLengthOperation ERROR failed to get length... %d", err ); + } + } + else if ( aDataType == EDCStatus) + { + length = 0; // to make sure we don't fetch it twice + TPckgBuf ptr; + err = SendReceive( EDeplCompGetDataOperation, TIpcArgs( &pid, &pdt, &ptr ) ); + if ( err == KErrNone ) + { + TBuf8<10> b; + b.AppendNum( ptr() ); + aBuffer.InsertL( 0, b ); + RDEBUG( "RApplicationManagement: DeploymentComponentDataL EDCDownloadStatus SUCCESS!" ); + } + else + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentDataL EDCDownloadStatus ERROR failed... %d", err ); + } + } + else if ( aDataType == EDCConRef ) + { + length = 0; // to make sure we don't fetch it twice + TPckgBuf ptr; + err = SendReceive( EDeplCompGetDataOperation, TIpcArgs( &pid, &pdt, &ptr ) ); + if ( err == KErrNone ) + { + aBuffer.InsertL( 0, ptr ); + RDEBUG( "RApplicationManagement: DeploymentComponentDataL EDCConRef SUCCESS!" ); + } + else + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentDataL EDCConRefERROR failed... %d" , err ); + } + } + else + { + User::Leave( KErrArgument ); + } + if ( length > 0 ) + { + HBufC8 *buf = HBufC8::NewLC( length ); + TPtr8 ptr( buf->Des() ); + err = SendReceive( EDeplCompGetDataOperation, TIpcArgs( &pid, &pdt, &ptr ) ); + if ( err == KErrNone ) + { + aBuffer.InsertL( 0, ptr ); + RDEBUG( "RApplicationManagement: DeploymentComponentDataL EDeplCompGetDataOperation SUCCESS!" ); + } + else + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentDataL EDeplCompGetDataOperationERROR failed... %d", err ); + } + CleanupStack::PopAndDestroy( buf ); + } + else + { + RDEBUG( "RApplicationManagement: DeploymentComponentDataL: Length is zero" ); + } + User::LeaveIfError( err ); + } + + +EXPORT_C TInt RApplicationManagement::DeploymentComponentIdsL( + RElementIdArray &aArray, const TDeploymentComponentState aState ) const + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentIds aState=%d!", aState ); + TInt count = 0; + TPckg cnt(count); + TPckg pk(aState); + TInt err( SendReceive( EDeplCompCountOperation, TIpcArgs( &cnt, &pk ) ) ); + RDEBUG_2( "RApplicationManagement: DeploymentComponentIds : Count is %d", count ); + if ( err == KErrNone ) + { + if ( count > 0 ) + { + aArray.Reset(); + for ( TInt i( 0 ); i != count; ++i ) + { + aArray.AppendL( 0 ); + } + TPtr8 p( reinterpret_cast< TUint8* >( &aArray[0] ), 0, count * sizeof( TUint32 ) ); + err = SendReceive( EDeplCompIdsOperation, TIpcArgs( &p, &pk ) ) ; + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: DeploymentComponentIds SUCCESS!" ); + } + else + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentIds failed... %d", err ); + } + } + } + else + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentIds failed to get count... %d", err); + } + return err; + } + +/** +* InstallL Installs given deployment component. +* @param aDeploymentComponent The deployment component to be installed +* @param aTargetState Will the installed component be actibve or inactive (default active) +* @return KErrNone Symbian error code +*/ +EXPORT_C void RApplicationManagement::InstallL( TUint32 aInternalId, + TDeploymentComponentState aTargetState ) const + { + TPckg id(aInternalId); + if ( aTargetState != EDCSActive && aTargetState != EDCSInactive ) + { + // install only to either of above states + User::Leave( KErrArgument ); + } + TPckg pk( aTargetState ); + + TInt err( SendReceive( EInstallOperation, TIpcArgs( &id, &pk ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: InstallL SUCCESS!" ); + } + else + { + RDEBUG_2("ApplicationManagementServer: InstallL failed... %d", err); + if( err == KErrNotFound ) + { + err = KErrArgument ; // indicates that data was not filled... + } + } + User::LeaveIfError( err ) ; + } + +EXPORT_C void RApplicationManagement::UpdateDeploymentComponentDataL( + TUint32 aInternalId, TDeplCompAttrType aItem, const TDesC8 &aItemData, const TDesC8 &aDataMime ) const + { + TDeplCompDataIPC ipc ; + ipc.iDataMime = aDataMime; + ipc.iInternalId = aInternalId ; + ipc.iAttrType = aItem ; + TPckg pipc( ipc ); + + TInt err( SendReceive( EDeplCompUpdateDataOperation, TIpcArgs( &pipc, &aItemData ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: UpdateDeploymentComponentDataL SUCCESS!" ); + } + else + { + RDEBUG_2("ApplicationManagementServer: UpdateDeploymentComponentDataL failed... %d", err); + } + User::LeaveIfError( err ); + } + +EXPORT_C void RApplicationManagement::UpdateDeploymentComponentStreamedDataL( + TUint32 aInternalId, TDeplCompAttrType aItem, const TDesC8 &aDataMime ) const + { + TDeplCompDataIPC ipc ; + ipc.iDataMime = aDataMime; + ipc.iInternalId = aInternalId ; + ipc.iAttrType = aItem ; + TPckg pipc( ipc ); + + TInt err( SendReceive( EDeplCompUpdateStreamedDataOperation, TIpcArgs( &pipc ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: UpdateDeploymentComponentStreamedDataL SUCCESS!" ); + } + else + { + RDEBUG_2("ApplicationManagementServer: UpdateDeploymentComponentStreamedDataL failed... %d", err); + } + User::LeaveIfError( err ); + } + + +EXPORT_C void RApplicationManagement::UpdateDeploymentComponentL( + TUint32 aInternalId, TDeplCompAttrType aItem, const TDesC8 &aItemData ) const + { + TPckg id(aInternalId); + TPckg itemid(aItem); + + TInt err( SendReceive( EDeplCompAttrUpdateOperation, TIpcArgs( &id, &itemid, &aItemData ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: UpdateDeploymentComponentL SUCCESS!" ); + } + else + { + RDEBUG_2("ApplicationManagementServer: UpdateDeploymentComponentL failed... %d", err); + } + User::LeaveIfError( err ); + } + + +/** +* RemoveL Removes given deployment component. +* @param aInternalId Id of the component to be removed +* @return KErrNone Symbian error code +*/ +EXPORT_C void RApplicationManagement::RemoveL( TUint32 aInternalId ) const + { + TPckg< TUint32 > id( aInternalId ); + RDEBUG_2( "RApplicationManagement: RemoveL %d!" , aInternalId ); + + TInt err( SendReceive( EDeplCompRemoveOperation, TIpcArgs( &id ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: RemoveL SUCCESS!" ); + } + else if ( err == KErrNotFound ) + { + RDEBUG( "RApplicationManagement: RemoveL WARNING Component already missing!" ); + } + else + { + RDEBUG_2("ApplicationManagementServer: RemoveL failed... %d", err); + User::LeaveIfError( err ); + } + } + + +/** + * StartDownloadL Starts download of deployment component. + * @param aInternalId The id of the component to be downloaded + * @return + */ +EXPORT_C void RApplicationManagement::StartDownloadL( TUint32 aInternalId, + const TDownloadTarget aTarget ) const + { + TPckg< TUint32 > id( aInternalId ); + RDEBUG_2( "RApplicationManagement: StartDownloadL %d!", aInternalId ); + TPckg< TDownloadTarget > trg( aTarget ); + TInt err( SendReceive( EDeplCompStartDownloadOperation, TIpcArgs( &id, &trg ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: StartDownloadL SUCCESS!" ); + } + else + { + RDEBUG_2("ApplicationManagementServer: StartDownloadL failed... %d", err); + } + User::LeaveIfError( err ); + } + + +EXPORT_C TUint32 RApplicationManagement::DownloadL( const TDCUserId &aUserId ) const + { + TUint32 id( 0 ) ; + TPckg< TUint32 > pid( id ); + + TInt err( SendReceive( EDeplCompDownloadOperation, TIpcArgs( &pid, &aUserId ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: DownloadL SUCCESS!" ); + err = pid() ; + } + else + { + RDEBUG_2("ApplicationManagementServer: DownloadL failed... %d", err); + } + return err ; + } + +EXPORT_C void RApplicationManagement::UpdateL( TUint32 aSourceInternalId, TUint32 aTargetInternalId ) const + { + TPckg< TUint32 > sid( aSourceInternalId ); + TPckg< TUint32 > tid( aTargetInternalId ); + + TInt err( SendReceive( EDeplCompUpdateOperation, TIpcArgs( &sid, &tid ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: UpdateL SUCCESS!" ); + } + else + { + RDEBUG_2("ApplicationManagementServer: UpdateL failed... %d", err); + } + User::LeaveIfError( err ); + } + + + +EXPORT_C TInt RApplicationManagement::StateChangingDCIdsL( RElementIdArray &aArray ) const + { + RDEBUG( "RApplicationManagement: StateChangingDCIds " ); + TInt count( 0 ) ; + TPckg cnt(count); + TInt err( SendReceive( EGetStateChangingIdsCountOperation, TIpcArgs( &cnt ) ) ); + if ( err == KErrNone ) + { + aArray.Reset(); + if ( count > 0 ) + { + for ( TInt i( 0 ); i != count; ++i ) + { + aArray.AppendL( 0 ); + } + TPtr8 p( reinterpret_cast< TUint8* >( &aArray[0] ), 0, count * sizeof( TUint32 ) ); + err = SendReceive( EGetStateChangingIdsOperation, TIpcArgs( &p ) ) ; + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: StateChangingDCIds SUCCESS!" ); + } + else + { + RDEBUG_2( "RApplicationManagement: StateChangingDCIds failed... %d" , err ); + } + } + else + { + RDEBUG_2("RApplicationManagement: StateChangingDCIds SUCCESS zero dcs... %d", count); + } + } + else + { + RDEBUG_2("RApplicationManagement: StateChangingDCIds failed... %d", err); + } + return err; + } + + +EXPORT_C TInt RApplicationManagement::StateChangeComplete( TUint32 aInternalId ) const + { + TPckg id(aInternalId); + + TInt err( SendReceive( ECompleteStateChangeOperation, TIpcArgs( &id ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: StateChangeComplete SUCCESS!" ); + } + else + { + RDEBUG_2("ApplicationManagementServer: StateChangeComplete failed... %d", err); + if( err == KErrNotFound ) + { + err = KErrArgument ; // indicates that data was not filled... + } + } + return ( err ) ; + } + + +/** +* ActivateL Tries to activate given deployment component +* +* @param aInternalId The id of the component to be activated +*/ +EXPORT_C void RApplicationManagement::ActivateL( TUint32 aInternalId ) const + { + TPckg< TUint32 > id( aInternalId ); + RDEBUG_2( "RApplicationManagement: ActivateL %d!" , aInternalId ); + + TInt err( SendReceive( EDeplCompActivateOperation, TIpcArgs( &id ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: ActivateL SUCCESS!" ); + } + else + { + RDEBUG_2("ApplicationManagementServer: ActivateL failed... %d", err); + } + User::LeaveIfError( err ); + } + +/** +* DeactivateL Tries to deactivate given deployment component +* +* @param aInternalId The id of the component to be deactivated +*/ +EXPORT_C void RApplicationManagement::DeactivateL( TUint32 aInternalId ) const + { + TPckg< TUint32 > id( aInternalId ); + RDEBUG_2( "RApplicationManagement: DeactivateL %d!", aInternalId ); + + TInt err( SendReceive( EDeplCompDeactivateOperation, TIpcArgs( &id ) ) ); + if ( err == KErrNone ) + { + RDEBUG( "RApplicationManagement: DeactivateL SUCCESS!" ); + } + else + { + RDEBUG_2("ApplicationManagementServer: DeactivateL failed... %d", err); + } + User::LeaveIfError( err ); + } + + +/** +* DeploymentComponentDataSizeL Get deployment component attribute size +* +* @param aInternalId The id of the component +* @param aItem The type of attribute whose size is to be got +* @return The size +*/ +EXPORT_C TInt RApplicationManagement::DeploymentComponentDataSizeL( TUint32 aInternalId, const TDeplCompAttrType &aDataType ) const + { + TPckg< TUint32 > pid( aInternalId ); + TPckg< TDeplCompAttrType > pdt( aDataType ); + TInt length( 0 ); + TPckg< TInt > plen( length ); + TInt err( KErrNone) ; + if ( aDataType == EDCInstallOptions + || aDataType == EDCMetaData + || aDataType == EDCData + || aDataType == EDCDownloadURI ) + { + err = SendReceive( EDeplCompGetDataLengthOperation, TIpcArgs( &pid, &pdt, &plen) ) ; + if ( err == KErrNone ) + { + + } + } + else if ( aDataType == EDCStatus ) + { + length = 0; + TPckgBuf ptr; + err = SendReceive( EDeplCompGetDataOperation, TIpcArgs( &pid, &pdt, &ptr ) ); + if ( err == KErrNone ) + { + TBuf8<10> b; + b.AppendNum( ptr() ); + length = b.Length(); + RDEBUG( "RApplicationManagement: DeploymentComponentDataSizeL elseif SUCCESS!" ); + } + else + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentDataSizeL ERROR failed... %d", err ); + } + } + else + { + TPckgBuf pinfo; + TPckg< TUint32 > pid( aInternalId ); + err = SendReceive( EDeplCompGetOperation, TIpcArgs( &pid, &pinfo) ); + if ( err == KErrNone ) + { + RDEBUG_2( "RApplicationManagement: DeploymentComponentDataSizeL else SUCCESS id: %d", aInternalId ); + switch ( aDataType ) + { + case EDCId: + { + length = pinfo().iId.Length(); + break; + } + case EDCName: + { + length = pinfo().iName.Length(); + break; + } + case EDCVersion: + { + length = pinfo().iVersion.Length(); + break; + } + default: + { + break; + } + } + } + else + { + RDEBUG_2("RApplicationManagement: DeploymentComponentDataSizeL failed... %d", err); + } + } + + RDEBUG_2("RApplicationManagement: DeploymentComponentDataSizeL returning... %d", length); + + return length; + } + +/** +* DeploymentComponentTempInstFileL ask file handle from server to be used +* +* @param aInternalId The id of the component +* @param aTempFile temporary file handle +* @param aItem The type of attribute whose type of temporary file to get +* @return KErrNone Symbian error code +*/ +EXPORT_C void RApplicationManagement::DeploymentComponentTempInstFileL( TUint32 aInternalId, RFile& aTempFile, const TDeplCompAttrType &aItem ) const + { + RDEBUG_3( "RApplicationManagement: DeploymentComponentTempInstFileL: Id (%d) AttrType (%d)", aInternalId, aItem ); + TPckg id(aInternalId); + TPckg itemid(aItem); + TPckgBuf filehandle; + + TInt fshandle = SendReceive(EDeplCompGetTemporaryInstFile, TIpcArgs( &id, &itemid, &filehandle ) ); + TInt err = aTempFile.AdoptFromServer( fshandle, filehandle() ) ; + User::LeaveIfError( err ); + RDEBUG_2( "RApplicationManagement: DeploymentComponentTempInstFileL fshandle (%d)", fshandle ); + } + +/** +* GetFinalResultsForGAL ask results from AM Server. In response AM +* server returns final result and target URI of node +* +* @param aInternalId The id of the component +* @param aFinalResult Final result of deployment component +* @param aTargetURI Target URI of deployment component +* @return void +*/ + +EXPORT_C void RApplicationManagement::GetFinalResultsForGAL(TUint32 aInternalId, TInt& aFinalResult, TDes8& aTargetURI) const +{ + TPckg internalid(aInternalId); + TPckg finalresult(aFinalResult); + TPckg targeturi(aTargetURI); + + TInt err = SendReceive(EDeplCompGetFinalResultForGA, TIpcArgs( &internalid, &finalresult, &aTargetURI) ); +} + +EXPORT_C void RApplicationManagement::GenericAlertSentL(TUint32 aInternalId) const +{ + + TPckg internalid(aInternalId); + + + TInt err = SendReceive(EDeplCompGenericAlertSent, TIpcArgs( &internalid) ); +} + +/** +* Implementation of Service UID() from base class. Returns AM service UID +* to framework +* +* @return uid of AM service UID +*/ +EXPORT_C void RApplicationManagement::CheckStatusNodesL( ) const + { + User::LeaveIfError( SendReceive( ECheckStatusNodes, TIpcArgs() ) ); + } + +TUid RApplicationManagement::ServiceUid() const + { + + + return TUid::Uid( KAMServiceUid); + } + +// End of File