wvuing/wvuieng/EngSrc/CCAAccessManager.cpp
changeset 0 094583676ce7
--- /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