diff -r 000000000000 -r 094583676ce7 presadap12/impsplugin/src/cimpspluginconnectionmanager.cpp --- /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 +#include +#include +#include +#include + +#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 +