diff -r 000000000000 -r 164170e6151a pkiutilities/DeviceToken/Src/Generic/Client/DevToken.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/DeviceToken/Src/Generic/Client/DevToken.cpp Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,166 @@ +/* +* Copyright (c) 2006 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 DevToken +* +*/ + + + +#include +#include "DevToken.h" +#include "DevTokenUtils.h" +#include "DevTokenInterfaceFactory.h" +#include "DevtokenLog.h" + +// Information strings returned by MCTToken::Information() +_LIT(KVersion, "1.00"); +_LIT(KSerialNo, "0"); +_LIT(KManufacturer, "Nokia"); + +// ======== MEMBER FUNCTIONS ======== + +// ----------------------------------------------------------------------------- +// MCTToken* CDevToken::NewL() +// ----------------------------------------------------------------------------- +// +MCTToken* CDevToken::NewL(EDevTokenEnum aTokenTypeVal, + MCTTokenType* aTokenType, + RDevTokenClientSession& aClient) + { + __ASSERT_DEBUG(aTokenType, DevTokenPanic(EBadArgument)); + //Destroyed by MCTToken::Release() (refcounted) + CDevToken* me = new (ELeave) CDevToken(aTokenTypeVal, aTokenType, aClient); + return (static_cast(me)); + } + + +// ----------------------------------------------------------------------------- +// CDevToken::CDevToken() +// ----------------------------------------------------------------------------- +// +CDevToken::CDevToken(EDevTokenEnum aTokenTypeVal, MCTTokenType* aTokenType, RDevTokenClientSession& aClient) + : iTokenEnum(aTokenTypeVal), + iTokenType(aTokenType), + iRefCount(0), + iClientSession(aClient) + { + ASSERT(iTokenEnum < ETotalTokensSupported); + } + + +// ----------------------------------------------------------------------------- +// MCTTokenType& CDevToken::TokenType() +// ----------------------------------------------------------------------------- +// +MCTTokenType& CDevToken::TokenType() + { + __ASSERT_DEBUG(iTokenType, DevTokenPanic(ENotInitialised)); + return (*iTokenType); + } + + +// ----------------------------------------------------------------------------- +// const TDesC& CDevToken::Label() +// ----------------------------------------------------------------------------- +// +const TDesC& CDevToken::Label() + { + RSupportedTokensArray supportedTokens; + const TDesC* token = supportedTokens[iTokenEnum]; + return (*token); + } + + +// ----------------------------------------------------------------------------- +// TCTTokenHandle CDevToken::Handle() +// ----------------------------------------------------------------------------- +// +TCTTokenHandle CDevToken::Handle() + { + __ASSERT_DEBUG(iTokenType, DevTokenPanic(ENotInitialised)); + return (TCTTokenHandle(iTokenType->Type(), iTokenEnum)); + } + + +// ----------------------------------------------------------------------------- +// TInt& CDevToken::ReferenceCount() +// ----------------------------------------------------------------------------- +// +TInt& CDevToken::ReferenceCount() + { + return (iRefCount); + } + + +// ----------------------------------------------------------------------------- +// CDevToken::DoGetInterface() +// ----------------------------------------------------------------------------- +// +void CDevToken::DoGetInterface(TUid aRequiredInterface, + MCTTokenInterface*& aReturnedInterface, + TRequestStatus& aStatus) + { + // No longer calls server to get the interface - just creates a client object of the appropriate type + TRACE_PRINT("--> DoGetInterface 1"); + aReturnedInterface = NULL; + TRAPD(result, aReturnedInterface = DevTokenInterfaceFactory::ClientInterfaceL(aRequiredInterface.iUid, *this, iClientSession)); + TRACE_PRINT("--> DoGetInterface 2") + if (result != KErrNone) + { + TRACE_PRINT("-->DoGetInterface 3") + Release(); + } + + //Complete the TRequestStatus here since not asynchronous + TRequestStatus* status = &aStatus; + User::RequestComplete(status, result); + } + + +// ----------------------------------------------------------------------------- +// TBool CDevToken::DoCancelGetInterface() +// ----------------------------------------------------------------------------- +// +TBool CDevToken::DoCancelGetInterface() + {//Not an asynchronous call for current file store, so nothing to do + return (EFalse); + } + + +// ----------------------------------------------------------------------------- +// CDevToken::Information(TTokenInformation aRequiredInformation) +// ----------------------------------------------------------------------------- +// +const TDesC& CDevToken::Information(TTokenInformation aRequiredInformation) + { + switch ( aRequiredInformation ) + { + case EVersion: + return KVersion; + + case ESerialNo: + return KSerialNo; + + case EManufacturer: + return KManufacturer; + + default: + DevTokenPanic(EBadArgument); + } + + return KNullDesC; + } + +//EOF +