/** Copyright (c) 2002-2008 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 is the handler for various events related to* those SIM Application Toolkit proactive commands that* simply indicate that an action occured at the server.**/// INCLUDE FILES#include <e32svr.h>#include <basched.h>#include "RSatUiSession.h"#include "MSatUiObserver.h"#include "CSatCEventHandler.h"#include "SatSOpcodes.h"#include "SatSTypes.h"#include "SatLog.h"// ============================ MEMBER FUNCTIONS ===============================// -----------------------------------------------------------------------------// CSatCEventHandler::CSatCEventHandler// C++ default constructor can NOT contain any code, that// might leave.// -----------------------------------------------------------------------------////lint -e{1769, 1403} Can not be initialized.CSatCEventHandler::CSatCEventHandler( TInt aPriority, RSatUiSession* aSession ) : CActive( aPriority ), iSession( aSession ), iEventData(), iEventPckg( iEventData ) { LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::CSatCEventHandler calling" ) // Add to active scheduler. CActiveScheduler::Add( this ); LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::CSatCEventHandler exiting" ) }// -----------------------------------------------------------------------------// CSatCEventHandler::NewL// Two-phased constructor.// -----------------------------------------------------------------------------//CSatCEventHandler* CSatCEventHandler::NewL( RSatUiSession* aSat ) { LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::NewL calling" ) // Perform construction. CSatCEventHandler* self = new ( ELeave ) CSatCEventHandler( EPriorityLow, aSat ); LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::NewL exiting" ) return self; }// DestructorCSatCEventHandler::~CSatCEventHandler() { LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::~CSatCEventHandler calling" ) // Cancel any outstanding requests. Cancel(); iSession = NULL; LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::~CSatCEventHandler exiting" ) }// -----------------------------------------------------------------------------// CSatCEventHandler::Start// Starts the handler.// (other items were commented in a header).// -----------------------------------------------------------------------------//void CSatCEventHandler::Start() { LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::Start calling" ) // Request notifications about various server-side events. TIpcArgs arguments( &iEventPckg ); iSession->CreateRequest( ESatSProactiveEvent, arguments, iStatus ); // Set this handler to active so that it can receive requests. SetActive(); LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::Start exiting" ) }// -----------------------------------------------------------------------------// CSatCEventHandler::RunL// Handles the command.// (other items were commented in a header).// -----------------------------------------------------------------------------//void CSatCEventHandler::RunL() { LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::RunL calling" ) // Check the status of the asnychronous operation if ( KErrNone != iStatus.Int() ) { LOG2( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::RunL exiting, error: %d", iStatus.Int() ) // Renew the request Start(); return; } // Send event to UI iSession->SatUiObserver()->EventNotification( iEventData.iEvent, iEventData.iStatus, iEventData.iError ); if ( ESatSCloseSatUiAppEvent == iEventData.iEvent ) { LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::RunL close ui" ) // Close UI CBaActiveScheduler::Exit(); } // Pass the Event response IPC package. TIpcArgs arguments( &iEventPckg ); // Perform the IPC data transfer. iSession->CreateRequest( ESatSProactiveEventResponse, arguments ); // Renew the service request. Start(); LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::RunL exiting" ) }// -----------------------------------------------------------------------------// CSatCEventHandler::DoCancel// Cancels the pending request.// (other items were commented in a header).// -----------------------------------------------------------------------------//void CSatCEventHandler::DoCancel() { LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::DoCancel calling" ) // Complete the request with cancel code. TRequestStatus* requestStatus = &iStatus; User::RequestComplete( requestStatus, KErrCancel ); LOG( SIMPLE, "SATINTERNALCLIENT: CSatCEventHandler::DoCancel exiting" ) }// End of File