--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuieng/EngSrc/CCAAccessManager.cpp Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,178 @@
+/*
+* Copyright (c) 2005 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: Network operations for chat access handling.
+ *
+*/
+
+
+// INCLUDE FILES
+#include "ChatDebugPrint.h"
+
+#include "CCAAccessManager.h"
+#include "MCAImpsAccessClient.h"
+#include "CCAAdapterDll.h"
+#include "MCAImpsFactory.h"
+#include "CCARequest.h"
+#include "CCARequestMapper.h"
+
+
+// ================= MEMBER FUNCTIONS =======================
+// Symbian OS default constructor can leave.
+void CCAAccessManager::ConstructL()
+ {
+ CHAT_DP_TXT( "CCAAccessManager::ConstructL, CreateAccessClientL" );
+ iImpsAccessClient = CreateImpsFactoryL()->CreateAccessClientL();
+
+ iImpsAccessClient->RegisterL( this, CActive::EPriorityIdle );
+ iImpsAccessClient->RegisterErrorObserverL( *this );
+ }
+
+// Two-phased constructor.
+CCAAccessManager* CCAAccessManager::NewL( CCARequestMapper& aRequestMapper )
+ {
+ CCAAccessManager* self = new ( ELeave ) CCAAccessManager( aRequestMapper );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// Destructor
+CCAAccessManager::~CCAAccessManager()
+ {
+ if ( iImpsAccessClient )
+ {
+ iImpsAccessClient->Unregister();
+ }
+ }
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CCAAccessManager::CCAAccessManager( CCARequestMapper& aRequestMapper )
+ : iRequestMapper( aRequestMapper )
+ {
+ }
+
+void CCAAccessManager::LoginL( TImpsCspIdentifier& aCspId,
+ const TDesC& aPsw,
+ const TDesC& aClientId,
+ TUint32 aAP,
+ const TDesC* aKey1/* = NULL*/,
+ const TDesC* aKey2/* = NULL*/ )
+ {
+ CHAT_DP_FUNC_ENTER( "CCAAccessManager::LoginL" );
+ TInt opId = iImpsAccessClient->LoginL( aCspId, aPsw, aClientId,
+ aAP, aKey1, aKey2 );
+ CHAT_DP( D_CHAT_LIT( "CCAAccessManager::LoginL - opid=%d" ), opId );
+ TInt error = ExecuteRequestL( opId, ELoginRequest );
+ CHAT_DP( D_CHAT_LIT( "CCAAccessManager::LoginL - opid=%d, status=%d" ),
+ opId, error );
+ CHAT_DP_FUNC_DONE( "CCAAccessManager::LoginL" );
+ }
+
+void CCAAccessManager::LogoutL()
+ {
+ CHAT_DP_FUNC_ENTER( "CCAAccessManager::LogoutL" );
+ TInt opId = iImpsAccessClient->LogoutL();
+ TInt error = ExecuteRequestL( opId, ELogoutRequest );
+ CHAT_DP( D_CHAT_LIT( "CCAAccessManager::LogoutL - opid=%d, status=%d" ),
+ opId, error );
+ CHAT_DP_FUNC_DONE( "CCAAccessManager::LogoutL" );
+ }
+
+// --------------------------------------------------------
+// CCAGroupManager::HandleErrorL
+// ---------------------------------------------------------
+//
+void CCAAccessManager::HandleErrorL(
+ TInt aStatus,
+ TInt aOpId,
+ const TDesC* /* aDescription */,
+ const CImpsDetailed* /* aDetailedRes */,
+ TImpsCspIdentifier& /*aCspId*/ )
+ {
+ CHAT_DP_FUNC_ENTER( "HandleErrorL" );
+ CHAT_DP( D_CHAT_LIT( "CCAAccessManager::HandleErrorL - opid=%d, status=%d" ),
+ aOpId, aStatus );
+ iRequestMapper.HandleRequest( aOpId, aStatus );
+ CHAT_DP_FUNC_DONE( "HandleErrorL" );
+ }
+
+void CCAAccessManager::HandleLoginL( TInt aId,
+ TImpsCspIdentifier& /* aCspId */ )
+ {
+ CHAT_DP( D_CHAT_LIT( "CCAAccessManager::HandleLoginL - opid=%d" ), aId );
+ iRequestMapper.HandleRequest( aId, KErrNone );
+ }
+
+void CCAAccessManager::HandleLogoutL( TInt aId,
+ TImpsCspIdentifier& /* aCspId */ )
+ {
+ CHAT_DP( D_CHAT_LIT( "CCAAccessManager::HandleLogoutL - opid=%d" ), aId );
+ iRequestMapper.HandleRequest( aId, KErrNone );
+ }
+
+void CCAAccessManager::HandleLoginCancelL( TInt aCancelledOpId,
+ TImpsCspIdentifier& /* aCspId */ )
+ {
+ CHAT_DP( D_CHAT_LIT( "CCAAccessManager::HandleLoginCancelL - opid=%d" ),
+ aCancelledOpId );
+ iRequestMapper.HandleRequest( aCancelledOpId, KErrCancel );
+ }
+
+void CCAAccessManager::HandleNbrSessionsL( TInt aId,
+ TInt /* aNbr */,
+ TImpsCspIdentifier& /* aCspId */ )
+ {
+ CHAT_DP( D_CHAT_LIT( "CCAAccessManager::HandleNbrSessionsL - opid=%d" ),
+ aId );
+ iRequestMapper.HandleRequest( aId, KErrNone );
+ }
+
+// ---------------------------------------------------------
+// CCAGroupWrapper::ExecuteRequest
+// ---------------------------------------------------------
+//
+TInt CCAAccessManager::ExecuteRequestL( TInt aOperationId,
+ TOperationRequests aRequestType,
+ MDesCArray* aAdditionalData )
+ {
+ // creating request
+ CCARequest* request = iRequestMapper.CreateRequestL( aOperationId, EFalse );
+ CCARequestMapper& requestMapper = iRequestMapper;
+
+ // setting type
+ request->SetRequestType( aRequestType );
+
+ // setting additional data if exists
+ if ( aAdditionalData )
+ {
+ request->SetAdditionalData( *aAdditionalData );
+ }
+
+ // Now when the request type and additional data is set we can
+ // activate the synchronous wait
+ if ( aRequestType != ELogoutRequest )
+ {
+ request->StartWait();
+ }
+
+ TInt retVal( request->ErrorCode() );
+ requestMapper.RemoveRequest( request );
+
+ return retVal;
+ }
+
+// End of File