diff -r 000000000000 -r 094583676ce7 wvuing/wvuieng/EngSrc/CCAAccessManager.cpp --- /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