diff -r 6205fd287e8a -r 1abc632eb502 menufw/hierarchynavigator/hnutilities/src/hnservicehandler.cpp --- a/menufw/hierarchynavigator/hnutilities/src/hnservicehandler.cpp Thu Mar 18 14:45:17 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,282 +0,0 @@ -/* -* Copyright (c) 2007-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: ?Description -* -*/ - - -#include -#include - -#include "hnservicehandler.h" -#include "hnliwutils.h" -#include "hnglobals.h" -#include "hnmdbasekey.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnServiceHandler::ConstructL( - const TDesC8& aService, const TDesC8& aInterface, - const TDesC8& aCommand, - CLiwGenericParamList* aConstructor, - CLiwGenericParamList* aServiceCommand ) - { - iServiceName.CreateL( aService ); - iInterfaceName.CreateL( aInterface ); - iCommandName.CreateL( aCommand ); - - iServiceHandler = CLiwServiceHandler::NewL(); - iInput = CLiwGenericParamList::NewL(); - - iOutputForAS = CLiwGenericParamList::NewL(); - - iServiceInterface = NULL; - SetServiceInterfaceL( aConstructor ); - - // Please note that by setting these two member variables - // we take ownership of aConstructor and aServiceCommand. - // No leaving functions may be called in ConstructL from - // now on. - iConstructor = aConstructor; - iCommand = aServiceCommand; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C CHnServiceHandler* CHnServiceHandler::NewL( - const TDesC8& aService, const TDesC8& aInterface, - const TDesC8& aCommand, TServiceMode aMode, - CLiwGenericParamList* aConstructor, - CLiwGenericParamList* aServiceCommand ) - { - CHnServiceHandler* self = CHnServiceHandler::NewLC( aService, aInterface, - aCommand, aMode, aConstructor, aServiceCommand ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C CHnServiceHandler* CHnServiceHandler::NewLC( - const TDesC8& aService, const TDesC8& aInterface, - const TDesC8& aCommandName, TServiceMode aMode, - CLiwGenericParamList* aConstructor, - CLiwGenericParamList* aServiceCommand ) - { - CHnServiceHandler* self = new( ELeave ) CHnServiceHandler( aMode ); - CleanupStack::PushL( self ); - self->ConstructL( aService, aInterface, aCommandName, aConstructor, - aServiceCommand ); - return self; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CHnServiceHandler::CHnServiceHandler( TServiceMode aMode ) : - iMode( aMode ) - { - - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C CHnServiceHandler::~CHnServiceHandler() - { - - iServiceName.Close(); - iInterfaceName.Close(); - iCommandName.Close(); - - if ( iServiceInterface ) - { - iServiceInterface->Close(); - } - - delete iInput; - delete iConstructor; - delete iCommand; - delete iOutputForAS; - - if ( iServiceHandler ) - { - iServiceHandler->Reset(); - delete iServiceHandler; - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CHnServiceHandler::ExecuteL( MLiwNotifyCallback* aCallback, - TInt aCmdOptions) - { - TInt err( KErrNotSupported ); - if( iServiceInterface ) - { - err = KErrNotSupported; - iOutputForAS->Reset(); - iInput->Reset(); - iInput->AppendL( *iCommand ); - switch( iMode ) - { - case EServiceModeAsynchronous: - { - __ASSERT_DEBUG( aCallback , User::Panic( KMatrixPanic , 0 ) ); - TRAP(err, iServiceInterface->ExecuteCmdL( - iCommandName, *iInput, *iOutputForAS, aCmdOptions, aCallback ) ); - } - break; - case EServiceModeSynchronous: - { - TRAP(err, iServiceInterface->ExecuteCmdL( - iCommandName, *iInput, *iOutputForAS, aCmdOptions, NULL ) ); - } - break; - } - } - return err; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CHnServiceHandler::ExecuteL( - CLiwGenericParamList& aOutParamList, TRequestStatus& aStatus ) - { - iClientStatus = &aStatus; - (*iClientStatus) = KRequestPending; - iOutputForAO = &aOutParamList; - - TInt err( KErrNotSupported ); - if( iServiceInterface ) - { - err = KErrNone; - iInput->Reset(); - iInput->AppendL( *iCommand ); - - switch (iMode) - { - case EServiceModeAsynchronous: - { - TRAP(err, iServiceInterface->ExecuteCmdL( - iCommandName, *iInput, *iOutputForAO, 0, this ) ); - if ( err != KErrNone ) - { - User::RequestComplete( iClientStatus, err ); - } - } - break; - case EServiceModeSynchronous: - { - TRAP(err, iServiceInterface->ExecuteCmdL( - iCommandName, *iInput, *iOutputForAO ) ); - User::RequestComplete( iClientStatus, KErrNone ); - } - break; - default: - break; - } - } - else - { - // KErrNone ensures that CHnQueryResultCollector::HandleQueryResultsL() - // is called, empty results are added to list, and - // CHnMdItem::ResultsCollectedL doesn't get confused - User::RequestComplete( iClientStatus, KErrNone ); - } - - return err; - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -EXPORT_C TInt CHnServiceHandler::HandleNotifyL( - TInt /*aCmdId*/, - TInt /*aEventId*/, - CLiwGenericParamList& aEventParamList, - const CLiwGenericParamList& /*aInParamList*/ ) - { - // reset - if( iOutputForAO ) - { - iOutputForAO->Reset(); - iOutputForAO->AppendL( aEventParamList ); - - TLiwGenericParam param; - TInt error(KErrNone); - param.PushL(); - for (TInt i = 0; i < aEventParamList.Count(); i++) - { - if ( param.Name().Compare( KErrorCode8 ) == 0 - && param.Value().AsTInt32() == KSErrNoMemory ) - { - error = KErrNoMemory; - break; - } - } - CleanupStack::PopAndDestroy(¶m); - User::RequestComplete( iClientStatus, error); - } - return KErrNone; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -TInt CHnServiceHandler::SetServiceInterfaceL( - CLiwGenericParamList* aConstructor ) - { - CLiwGenericParamList& inParam = iServiceHandler->InParamListL(); - CLiwGenericParamList& outParam = iServiceHandler->OutParamListL(); - - CLiwCriteriaItem* critItem = CLiwCriteriaItem::NewLC( KLiwCmdAsStr, - iInterfaceName, iServiceName ); - - critItem->SetServiceClass( TUid::Uid( KLiwClassBase ) ); - RCriteriaArray critArr; - CleanupClosePushL( critArr ); - critArr.AppendL( critItem ); - iServiceHandler->AttachL( critArr ); - inParam.AppendL( *aConstructor ); - iServiceHandler->ExecuteServiceCmdL( *critItem, inParam, outParam ); - CleanupStack::PopAndDestroy( &critArr ); - CleanupStack::PopAndDestroy( critItem ); - - TInt pos( KErrNone ); - outParam.FindFirst( pos, iInterfaceName ); - if ( pos != KErrNotFound ) - { - iServiceInterface = outParam[pos].Value().AsInterface(); - } - - return pos; - } - -// End of file