--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/presadap12/impsplugin/src/cimpspluginconnectionmanager.cpp Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,388 @@
+/*
+* Copyright (c) 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: IMPS plugin connection manager
+*
+*/
+
+
+#include <e32std.h>
+#include <e32base.h>
+#include <ximpobjectfactory.h>
+#include <ximpprotocolconnectionhost.h>
+#include <ximpstatus.h>
+
+#include "CImpsPluginConnectionManager.h"
+#include "PImpsAdapWVCspVersion.h"
+
+#include "impsdebugprint.h"
+#include "CImpsPluginAccessHandler.h"
+#include "CImpsPluginPureDataHandler.h"
+
+#include "CImpsPluginLoginRequest.h"
+#include "CImpsPluginLogoutRequest.h"
+
+
+
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::CImpsPluginConnectionManager
+// ---------------------------------------------------------------------------
+//
+CImpsPluginConnectionManager::CImpsPluginConnectionManager()
+ : iIapId( 0 )
+ {
+ IMPS_DP( D_IMPS_LIT( "::CImpsPluginConnectionManager() Start" ) );
+ IMPS_DP( D_IMPS_LIT( "::CImpsPluginConnectionManager() End" ) );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CImpsPluginConnectionManager::ConstructL()
+ {
+
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::ConstructL() Start" ) );
+
+ User::LeaveIfError( iImpsClient.Connect() );
+
+ iAccessHandler = CImpsPluginAccessHandler::NewL( iImpsClient );
+
+ iNotifier = CPresenceNotificationHandler::NewL( *this );
+
+ // set the default version to 1.2
+ SetVersion( EWVCspV12 );
+
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::ConstructL() End" ) );
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::ManufactureDataHandlerL
+// ---------------------------------------------------------------------------
+//
+void CImpsPluginConnectionManager::ManufactureDataHandlerL()
+ {
+
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::ManufactureDataHandlerL() Start" ) );
+ if ( !iIsDataHandlerReady )
+ {
+ iPureHandler = CImpsPluginPureDataHandler::NewL( iImpsClient, *iAccessHandler );
+ iIsDataHandlerReady = ETrue;
+ iNotifier->StartListeningL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::IsDataHandlerCreatedL
+// ---------------------------------------------------------------------------
+//
+TBool CImpsPluginConnectionManager::IsDataHandlerCreatedL()
+ {
+
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::IsDataHandlerCreatedL() Start-End" ) );
+
+ return iIsDataHandlerReady;
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::NewL()
+// ---------------------------------------------------------------------------
+//
+CImpsPluginConnectionManager* CImpsPluginConnectionManager::NewL()
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::NewL() Start" ) );
+
+ CImpsPluginConnectionManager* self = new( ELeave )
+ CImpsPluginConnectionManager();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::NewL() End" ) );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::~CImpsPluginConnectionManager
+// ---------------------------------------------------------------------------
+//
+CImpsPluginConnectionManager::~CImpsPluginConnectionManager()
+ {
+ IMPS_DP( D_IMPS_LIT( "::~CImpsPluginConnectionManager() Start" ) );
+
+ delete iDisconnectStatusObj;
+
+ delete iServerAddress;
+ delete iUserName;
+ delete iPassword;
+ delete iLoginRequest;
+ delete iLogoutRequest;
+ delete iNotifier;
+ delete iPureHandler;
+ delete iAccessHandler;
+ // before destory cancel each of the active objects request
+ const TInt c = iRequestArray.Count() - 1;
+ for ( TInt i = c; i >= 0; i-- )
+ {
+ delete iRequestArray[ i ];
+ }
+ iPresenceAuthGrantReqList.Reset();
+ iRequestArray.Reset();
+
+ iImpsClient.Close();
+
+ IMPS_DP( D_IMPS_LIT( "::~CImpsPluginConnectionManager() End" ) );
+ }
+
+CPresenceNotificationHandler* CImpsPluginConnectionManager::PresNotifier()
+ {
+ return iNotifier;
+ }
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::IapId
+// ---------------------------------------------------------------------------
+//
+TInt32 CImpsPluginConnectionManager::IapId()
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::IapId() Start-End" ) );
+ return iIapId;
+ }
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::ServerAddress
+// ---------------------------------------------------------------------------
+//
+TDesC& CImpsPluginConnectionManager::ServerAddress()
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::ServerAddress() Start-End" ) );
+ return *iServerAddress;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::Username
+// ---------------------------------------------------------------------------
+//
+TDesC& CImpsPluginConnectionManager::UserName()
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::UserName() Start-End" ) );
+ return *iUserName;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::Password
+// ---------------------------------------------------------------------------
+//
+TDesC& CImpsPluginConnectionManager::Password()
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::Password() Start-End" ) );
+ return *iPassword;
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::HandleToHost
+// ---------------------------------------------------------------------------
+//
+MXIMPProtocolConnectionHost& CImpsPluginConnectionManager::HandleToHost()
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::HandleToHost() Start-End" ) );
+ return *iHostHandle;
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::AccessHandler
+// ---------------------------------------------------------------------------
+//
+CImpsPluginAccessHandler& CImpsPluginConnectionManager::AccessHandler()
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::AccessHandler() Start-End" ) );
+ return *iAccessHandler;
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::DataHandler
+// ---------------------------------------------------------------------------
+//
+CImpsPluginPureDataHandler& CImpsPluginConnectionManager::DataHandler()
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::DataHandler() Start-End" ) );
+ return *iPureHandler;
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::SetHost
+// ---------------------------------------------------------------------------
+//
+void CImpsPluginConnectionManager::SetHost( MXIMPProtocolConnectionHost& aHost )
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::SetHost() Start" ) );
+ iHostHandle = &aHost;
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::SetHost() End" ) );
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::SetConnectionParamsL
+// ---------------------------------------------------------------------------
+//
+void CImpsPluginConnectionManager::SetConnectionParamsL( const TDesC& aServerAddress,
+ const TDesC& aUserName,
+ const TDesC& aPassword,
+ const TInt32 aIapId )
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::SetConnectionParamsL() Start" ) );
+ // first store the login parameters
+ HBufC* tmpBuf = aServerAddress.AllocL();
+ delete iServerAddress;
+ iServerAddress = tmpBuf;
+
+ tmpBuf = aUserName.AllocL();
+ delete iUserName;
+ iUserName = tmpBuf;
+
+ tmpBuf = aPassword.AllocL();
+ delete iPassword;
+ iPassword = tmpBuf;
+
+ iIapId = aIapId;
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::SetConnectionParamsL() End" ) );
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::InitializeStatusL
+// ---------------------------------------------------------------------------
+//
+void CImpsPluginConnectionManager::InitializeStatusL()
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::InitializeStatusL() Start" ) );
+
+ MXIMPObjectFactory& objFactory = iHostHandle->ObjectFactory();
+ iDisconnectStatusObj = objFactory.NewStatusLC();
+
+ CleanupStack::Pop( iDisconnectStatusObj ); //iDisconnectStatusObj
+
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::InitializeStatusL() End" ) );
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::StatusChangedL
+// ---------------------------------------------------------------------------
+//
+void CImpsPluginConnectionManager::StatusChangedL(
+ TPEngNWSessionSlotState aNewState,
+ TPEngNWSessionSlotEvent aNewEvent )
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::StatusChangedL() Start" ) );
+
+ IMPSPRTPLUGIN_UNUSED_PARAM( aNewState );
+ IMPSPRTPLUGIN_UNUSED_PARAM( aNewEvent );
+
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::StatusChangedL() End" ) );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::ReserveSpaceForOneMoreRequestL
+// ---------------------------------------------------------------------------
+//
+void CImpsPluginConnectionManager::ReserveSpaceForOneMoreRequestL( )
+ {
+ IMPS_DP( D_IMPS_LIT( "::ReserveSpaceForOneMoreRequestL() Start" ) );
+
+ TInt count = iRequestArray.Count();
+
+ iRequestArray.Reserve( count + 1 );
+
+ IMPS_DP( D_IMPS_LIT( "::ReserveSpaceForOneMoreRequestL() End" ) );
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::AddRequest
+// ---------------------------------------------------------------------------
+//
+void CImpsPluginConnectionManager::AddRequest( CActive* aRequestObject )
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::AddRequest() Start" ) );
+
+ TInt count = iRequestArray.Count();
+
+ TInt error = iRequestArray.Append( aRequestObject );
+
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::AddRequest() End (%d)" ), error );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::Remove
+// ---------------------------------------------------------------------------
+//
+void CImpsPluginConnectionManager::Remove( CActive* aRequestObject )
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::Remove() Start" ) );
+
+ TInt index = iRequestArray.Find( aRequestObject );
+ if ( index != KErrNotFound )
+ {
+ iRequestArray.Remove( index );
+ }
+
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::Remove() End" ) );
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::GetVersion
+// ---------------------------------------------------------------------------
+//
+TImpsAdapWVCspVersion CImpsPluginConnectionManager::GetVersion()
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::GetVersion() Start-End" ) );
+ return iCSPVersion;
+ }
+
+// ---------------------------------------------------------------------------
+// CImpsPluginConnectionManager::Remove
+// ---------------------------------------------------------------------------
+//
+void CImpsPluginConnectionManager::SetVersion( TImpsAdapWVCspVersion aVersion )
+ {
+ IMPS_DP( D_IMPS_LIT( "CImpsPluginConnectionManager::SetVersion Start-End" ) );
+
+ if ( aVersion == EWVCspV12 )
+ {
+ iCSPVersion = EWVCspV12;
+ }
+ else if ( aVersion == EWVCspV13 )
+ {
+ iCSPVersion = EWVCspV13;
+ }
+ else if ( aVersion == EWVCspV11 )
+ {
+ iCSPVersion = EWVCspV11;
+ }
+ }
+
+RArray< HBufC >* CImpsPluginConnectionManager::PresenceAuthGrantReqList()
+ {
+ return &iPresenceAuthGrantReqList;
+ }
+
+
+
+
+// End of File
+