appinstaller/AppinstUi/Client/Src/SWInstLauncher.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 14 Sep 2010 21:31:28 +0300
branchRCL_3
changeset 27 e8965914fac7
parent 0 ba25891c3a9e
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002-2004 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:   This file contains the implementation of RSWInstLauncher 
*                class member functions.
*
*/


// INCLUDE FILES
#include <f32file.h>
#include <eikenv.h>

#include "SWInstApi.h"
#include "SWInstDefs.h"
#include "SWInstCommon.h"


using namespace SwiUI;

// ================= MEMBER FUNCTIONS =======================

// -----------------------------------------------------------------------------
// RSWInstLauncher::RSWInstLauncher
// C++ default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
EXPORT_C RSWInstLauncher::RSWInstLauncher()
    : iConnected( EFalse )
    {
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Connect
// Creates connection to the server.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::Connect()
    {
   
    TInt result( KErrNone );

    if ( !iConnected )
        {
        if ( CEikonEnv::Static() )
            {               
            TRAP( result, ConnectChainedAppL( KUidSWInstSvr ) );
            }
        else
            {             
            TRAP( result, REikAppServiceBase::ConnectNewAppL( KUidSWInstSvr ) );            
            }
        
        if ( result == KErrNone )
            {
            iConnected = ETrue;
            }        
        }
    
    // Return the result code           
    return result; 
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Close
// Closes the connection to the server.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//  
EXPORT_C void RSWInstLauncher::Close()
    {        
    if ( iConnected )
        {
        if ( CEikonEnv::Static() )
            { 
            // Note this will crash if non ui application like SWI Daemon.
            RAknAppServiceBase::Close();
            }
        else
            {            
            // Use EikAppServiceBase if non UI application.
            REikAppServiceBase::Close();
            }
        
        iConnected = EFalse;
        }        
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Install
// Launches the software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::Install( const TDesC& aFileName )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KFileNameIpcSlot, &aFileName );
    return SendReceive( ERequestInstall, args );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Install
// Launches the software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::Install( TRequestStatus& aReqStatus, 
                                        const TDesC& aFileName )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KFileNameIpcSlot, &aFileName );
    SendReceive( ERequestInstall, args, aReqStatus );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Install
// Launches the software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::Install( RFile& aFile )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    aFile.TransferToServer( args, KFileHandleIpcSlot, KFileSrvSessionIpcSlot );    
    return SendReceive( ERequestInstallHandle, args );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Install
// Launches the software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::Install( TRequestStatus& aReqStatus, 
                                        RFile& aFile )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    aFile.TransferToServer( args, KFileHandleIpcSlot, KFileSrvSessionIpcSlot );    
    SendReceive( ERequestInstallHandle, args, aReqStatus );
    }
  
// -----------------------------------------------------------------------------
// RSWInstLauncher::Install
// Launches the software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::Install( const TDesC& aFileName, 
                                        const TDesC8& aParams )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KFileNameIpcSlot, &aFileName );
    args.Set( KParamsIpcSlot, &aParams );

    return SendReceive( ERequestInstallParams, args );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Install
// Launches the software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::Install( TRequestStatus& aReqStatus, 
                                        const TDesC& aFileName,
                                        const TDesC8& aParams )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KFileNameIpcSlot, &aFileName );
    args.Set( KParamsIpcSlot, &aParams );

    SendReceive( ERequestInstallParams, args, aReqStatus );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Install
// Launches the software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::Install( RFile& aFile,
                                        const TDesC8& aParams )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    aFile.TransferToServer( args, KFileHandleIpcSlot, KFileSrvSessionIpcSlot );    
    args.Set( KParamsIpcSlot, &aParams );    

    return SendReceive( ERequestInstallParamsHandle, args );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Install
// Launches the software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::Install( TRequestStatus& aReqStatus, 
                                        RFile& aFile,
                                        const TDesC8& aParams )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    aFile.TransferToServer( args, KFileHandleIpcSlot, KFileSrvSessionIpcSlot );    
    args.Set( KParamsIpcSlot, &aParams );   

    SendReceive( ERequestInstallParamsHandle, args, aReqStatus );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentInstall
// Launches the silent software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::SilentInstall( const TDesC& aFileName, 
                                              const TDesC8& aOptions )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KFileNameIpcSlot, &aFileName );
    args.Set( KOptionsIpcSlot, &aOptions );       

    return SendReceive( ERequestSilentInstall, args );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentInstall
// Launches the silent software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::SilentInstall( TRequestStatus& aReqStatus, 
                                              const TDesC& aFileName, 
                                              const TDesC8& aOptions )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KFileNameIpcSlot, &aFileName );
    args.Set( KOptionsIpcSlot, &aOptions );   
    
    SendReceive( ERequestSilentInstall, args, aReqStatus );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentInstall
// Launches the silent software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::SilentInstall( RFile& aFile,
                                              const TDesC8& aOptions )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    aFile.TransferToServer( args, KFileHandleIpcSlot, KFileSrvSessionIpcSlot );
    args.Set( KOptionsIpcSlot, &aOptions );    

    return SendReceive( ERequestSilentInstallHandle, args );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentInstall
// Launches the silent software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::SilentInstall( TRequestStatus& aReqStatus, 
                                              RFile& aFile,
                                              const TDesC8& aOptions )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    aFile.TransferToServer( args, KFileHandleIpcSlot, KFileSrvSessionIpcSlot );
    args.Set( KOptionsIpcSlot, &aOptions );   
    
    SendReceive( ERequestSilentInstallHandle, args, aReqStatus );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentInstall
// Launches the silent software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::SilentInstall( const TDesC& aFileName,
                                              const TDesC8& aParams, 
                                              const TDesC8& aOptions )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );

    TIpcArgs args;
    args.Set( KFileNameIpcSlot, &aFileName );
    args.Set( KParamsIpcSlot, &aParams );   
    args.Set( KOptionsIpcSlot, &aOptions );   

    return SendReceive( ERequestSilentInstallParams, args );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentInstall
// Launches the silent software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::SilentInstall( TRequestStatus& aReqStatus,
                                              const TDesC& aFileName,
                                              const TDesC8& aParams, 
                                              const TDesC8& aOptions )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KFileNameIpcSlot, &aFileName );
    args.Set( KParamsIpcSlot, &aParams );   
    args.Set( KOptionsIpcSlot, &aOptions );
    
    SendReceive( ERequestSilentInstallParams, args, aReqStatus );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentInstall
// Launches the silent software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::SilentInstall( RFile& aFile,
                                              const TDesC8& aParams, 
                                              const TDesC8& aOptions )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );

    TIpcArgs args;
    aFile.TransferToServer( args, KFileHandleIpcSlot, KFileSrvSessionIpcSlot );
    args.Set( KParamsIpcSlot, &aParams );
    args.Set( KOptionsIpcSlot, &aOptions );    

    return SendReceive( ERequestSilentInstallParamsHandle, args );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentInstall
// Launches the silent software install procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::SilentInstall( TRequestStatus& aReqStatus,
                                              RFile& aFile,
                                              const TDesC8& aParams, 
                                              const TDesC8& aOptions )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    aFile.TransferToServer( args, KFileHandleIpcSlot, KFileSrvSessionIpcSlot );
    args.Set( KParamsIpcSlot, &aParams );
    args.Set( KOptionsIpcSlot, &aOptions );    
    
    SendReceive( ERequestSilentInstallParamsHandle, args, aReqStatus );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Uninstall
// Launches the software uninstall procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::Uninstall( const TUid& aUid,
                                          const TDesC8& aMIME )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
       
    TIpcArgs args;
    args.Set( KUidIpcSlot, aUid.iUid );
    args.Set( KMimeIpcSlot, &aMIME );

    return SendReceive( ERequestUninstall, args );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::Uninstall
// Launches the software uninstall procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::Uninstall( TRequestStatus& aReqStatus, 
                                          const TUid& aUid,
                                          const TDesC8& aMIME ) 
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
  
    TIpcArgs args;
    args.Set( KUidIpcSlot, aUid.iUid );
    args.Set( KMimeIpcSlot, &aMIME );
    
    SendReceive( ERequestUninstall, args, aReqStatus );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentUninstall
// Launches the silent software uninstall procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::SilentUninstall( const TUid& aUid,
                                                const TDesC8& aOptions,
                                                const TDesC8& aMIME )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );

    TIpcArgs args;
    args.Set( KUidIpcSlot, aUid.iUid );
    args.Set( KOptionsIpcSlot, &aOptions );    
    args.Set( KMimeIpcSlot, &aMIME );

    return SendReceive( ERequestSilentUninstall, args );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentUninstall
// Launches the silent software uninstall procedure.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::SilentUninstall( TRequestStatus& aReqStatus,
                                                const TUid& aUid,
                                                const TDesC8& aOptions,
                                                const TDesC8& aMIME )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KUidIpcSlot, aUid.iUid );
    args.Set( KOptionsIpcSlot, &aOptions );    
    args.Set( KMimeIpcSlot, &aMIME );

    SendReceive( ERequestSilentUninstall, args, aReqStatus );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::CancelAsyncRequest
// Cancel Asynchronous requests.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::CancelAsyncRequest( TInt aReqToCancel )
    {
    TIpcArgs args;
    args.Set( KRequestIpcSlot, aReqToCancel );

    return SendReceive( ERequestCancelRequest, args );    
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::CustomUninstall
// Performs a custom uninstallation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::CustomUninstall( TOperation aOperation, 
                                                const TDesC8& aParams,
                                                const TDesC8& aMIME )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KOperationIpcSlot, aOperation );
    args.Set( KCommonParamsIpcSlot, &aParams );   
    args.Set( KMimeIpcSlot, &aMIME ); 

    return SendReceive( ERequestCustomUninstall, args );
    }
  
// -----------------------------------------------------------------------------
// RSWInstLauncher::CustomUninstall
// Performs a custom uninstallation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::CustomUninstall( TRequestStatus& aReqStatus, 
                                                TOperation aOperation, 
                                                const TDesC8& aParams,
                                                const TDesC8& aMIME )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KOperationIpcSlot, aOperation );
    args.Set( KCommonParamsIpcSlot, &aParams );  
    args.Set( KMimeIpcSlot, &aMIME );  

    SendReceive( ERequestCustomUninstall, args, aReqStatus );
    }

EXPORT_C CErrDetails* RSWInstLauncher::GetLastErrorL()
    {
    User::Leave( KErrNotSupported );    
    // Keep the compiler happy
    return NULL;    
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentCustomUninstall
// Performs a silent custom uninstallation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RSWInstLauncher::SilentCustomUninstall( TOperation aOperation, 
                                                      const TDesC8& aOptions,
                                                      const TDesC8& aParams,
                                                      const TDesC8& aMIME )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KOptionsIpcSlot, &aOptions );
    args.Set( KOperationIpcSlot, aOperation );
    args.Set( KCommonParamsIpcSlot, &aParams );   
    args.Set( KMimeIpcSlot, &aMIME ); 

    return SendReceive( ERequestSilentCustomUninstall, args );
    }
  
// -----------------------------------------------------------------------------
// RSWInstLauncher::SilentCustomUninstall
// Performs a silent custom uninstallation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
EXPORT_C void RSWInstLauncher::SilentCustomUninstall( TRequestStatus& aReqStatus,                                                       
                                                      TOperation aOperation, 
                                                      const TDesC8& aOptions,
                                                      const TDesC8& aParams,
                                                      const TDesC8& aMIME )
    {
    __ASSERT_ALWAYS( iConnected, PanicClient( ESWInstPanicBadHandle ) );
    
    TIpcArgs args;
    args.Set( KOptionsIpcSlot, &aOptions );
    args.Set( KOperationIpcSlot, aOperation );
    args.Set( KCommonParamsIpcSlot, &aParams );  
    args.Set( KMimeIpcSlot, &aMIME );  

    SendReceive( ERequestSilentCustomUninstall, args, aReqStatus );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::PanicClient
// Panics the client.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
void RSWInstLauncher::PanicClient( TInt aPanic ) const
    {  
    _LIT( KSWInstClientFault, "SWInstCli" );
    User::Panic( KSWInstClientFault, aPanic );
    }

// -----------------------------------------------------------------------------
// RSWInstLauncher::ServiceUid
// Returns the UID of the service that this session provides an interface for.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TUid RSWInstLauncher::ServiceUid() const
    {
    return TUid::Uid( KSWInstInstallServiceUid );    
    }


//  End of File