pkiutilities/DeviceToken/Src/Generic/Client/DevTokenTypeSession.cpp
changeset 0 164170e6151a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/DeviceToken/Src/Generic/Client/DevTokenTypeSession.cpp	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,142 @@
+/*
+* 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 DevTokenTypeSession
+*
+*/
+
+
+
+#include <ct.h>
+#include <e32test.h>
+#include "DevTokenTypeSession.h"
+#include "DevTokenUtils.h"
+#include "DevToken.h"
+#include "DevTokenTypesEnum.h"
+#include "DevTokenCliServ.h"
+#include "DevtokenLog.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// -----------------------------------------------------------------------------
+// CDevTokenTypeSession::NewL(TUid aUid)
+// -----------------------------------------------------------------------------
+//
+CDevTokenTypeSession* CDevTokenTypeSession::NewL(TUid aUid)
+    {
+    TRACE_PRINT("CDevTokenTypeSession::NewL()");
+    // Destroyed by owner object (~CDevTokenTypeSession)
+    CDevTokenTypeSession* me = new (ELeave) CDevTokenTypeSession(aUid);
+    CleanupStack::PushL(me);
+    me->ConstructL();
+    CleanupStack::Pop(me);
+    return (me);
+    }
+
+
+// -----------------------------------------------------------------------------
+// CDevTokenTypeSession::CDevTokenTypeSession(TUid aUid) 
+// -----------------------------------------------------------------------------
+//
+CDevTokenTypeSession::CDevTokenTypeSession(TUid aUid) :
+    iUid(aUid)
+    {
+    } 
+
+
+// -----------------------------------------------------------------------------
+// CDevTokenTypeSession::~CDevTokenTypeSession(TUid aUid) 
+// -----------------------------------------------------------------------------
+//
+CDevTokenTypeSession::~CDevTokenTypeSession()
+    {
+    iClientSession.Close();
+    }
+
+
+// -----------------------------------------------------------------------------
+// void CDevTokenTypeSession::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CDevTokenTypeSession::ConstructL()
+    {
+    TRACE_PRINT("CDevTokenTypeSession::ConstructL()");
+    iTokenId = (EDevTokenEnum) KErrNotFound;
+
+    RTokenTypeUIDLookup tokenUids;
+    for ( TInt i = 0 ; i < ETotalTokensSupported ; ++i )
+        {
+        TRACE_PRINT("CDevTokenTypeSession::ConstructL() 1");
+        if ( tokenUids[i] == iUid.iUid )
+            {
+            TRACE_PRINT("CDevTokenTypeSession::ConstructL() 2");
+            iTokenId = (EDevTokenEnum) i;
+            break;
+            }
+        }
+    TRACE_PRINT("CDevTokenTypeSession::ConstructL() 3");
+    User::LeaveIfError((TInt) iTokenId);
+    TRACE_PRINT("CDevTokenTypeSession::ConstructL()4 ");
+    User::LeaveIfError(iClientSession.Connect(iTokenId));
+    TRACE_PRINT("CDevTokenTypeSession::ConstructL()5 ");
+    }
+
+
+// -----------------------------------------------------------------------------
+// CDevTokenTypeSession::ListTokensL(RCPointerArray<HBufC>& aTokens)
+// -----------------------------------------------------------------------------
+//
+void CDevTokenTypeSession::ListTokensL(RCPointerArray<HBufC>& aTokens)
+    {
+    RSupportedTokensArray tokenNames;
+    HBufC* name = tokenNames[iTokenId]->AllocLC();
+    User::LeaveIfError(aTokens.Append(name));
+    CleanupStack::Pop(name);
+    }
+
+
+// -----------------------------------------------------------------------------
+// CDevTokenTypeSession::OpenTokenL()
+// -----------------------------------------------------------------------------
+//
+void CDevTokenTypeSession::OpenTokenL(const TDesC& aTokenInfo, 
+                                      MCTTokenType* aTokenType, 
+                                      MCTToken*& aToken)
+    {
+    RSupportedTokensArray tokenNames;
+    if ( *tokenNames[iTokenId] != aTokenInfo )
+        {
+        User::Leave(KErrArgument);
+        }
+    aToken = CDevToken::NewL(iTokenId, aTokenType, iClientSession);
+    }
+
+
+// -----------------------------------------------------------------------------
+// CDevTokenTypeSession::OpenTokenL()
+// -----------------------------------------------------------------------------
+//
+void CDevTokenTypeSession::OpenTokenL(TCTTokenHandle aHandle, 
+                                      MCTTokenType* aTokenType, 
+                                      MCTToken*& aToken)
+    {   
+    if ( aHandle.iTokenTypeUid != iUid ||
+        aHandle.iTokenId != iTokenId )
+        {
+        User::Leave(KErrArgument);
+        }
+    aToken = CDevToken::NewL(iTokenId, aTokenType, iClientSession);
+    }
+
+//EOF
+