diff -r 000000000000 -r 094583676ce7 presadap12/impsplugin/src/cimpsconnection.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presadap12/impsplugin/src/cimpsconnection.cpp Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,314 @@ +/* +* Copyright (c) 2006 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 Protocol implementation for Presence Framework +* +*/ + +#include +#include +#include +#include +#include + + +#include "CImpsConnection.h" +#include "CImpsPluginConnectionManager.h" +#include "impsdebugprint.h" +#include "PImpsAdapWVCspVersion.h" + +#include "cimpsprotocolpresencefeatures.h" +#include "CImpsPluginLogoutRequest.h" +#include "CImpsPluginLoginRequest.h" + +#include "ximpserviceinfo.h" + + +_LIT( KImpsConnection, "CImpsConnection" ); +_LIT8( KConnectionFeacture, "imps/connection " ); + + +// ======== MEMBER FUNCTIONS ======== + + +// --------------------------------------------------------------------------- +// CImpsConnection::CImpsConnection() +// --------------------------------------------------------------------------- +// +CImpsConnection::CImpsConnection() + { + IMPS_DP( D_IMPS_LIT( "CImpsConnection::CImpsConnection() Start-End" ) ); + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::ConstructL() +// --------------------------------------------------------------------------- +// +void CImpsConnection::ConstructL( + const MXIMPServiceInfo& aServiceInfo , + const MXIMPContextClientInfo& aClientCtxInfo ) + { + IMPS_DP( D_IMPS_LIT( "CImpsConnection::ConstructL() Start" ) ); + + IMPSPRTPLUGIN_UNUSED_PARAM( aClientCtxInfo ); + + iConnMan = CImpsPluginConnectionManager::NewL(); + iConnMan->SetConnectionParamsL( aServiceInfo.ServiceAddress(), + aServiceInfo.UserId(), + aServiceInfo.Password(), + aServiceInfo.IapId() ); + + iPresFeatures = CImpsProtocolPresenceFeatures::NewL( *iConnMan ); + + IMPS_DP( D_IMPS_LIT( "CImpsConnection::ConstructL() End" ) ); + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::NewL() +// --------------------------------------------------------------------------- +// +CImpsConnection* CImpsConnection::NewL( + const MXIMPServiceInfo& aServiceInfo, + const MXIMPContextClientInfo& aClientCtxInfo ) + { + IMPS_DP( D_IMPS_LIT( "CImpsConnection::NewL() Start" ) ); + + CImpsConnection* self = new( ELeave ) CImpsConnection; + CleanupStack::PushL( self ); + self->ConstructL( aServiceInfo, aClientCtxInfo ); + CleanupStack::Pop( self ); + + IMPS_DP( D_IMPS_LIT( "CImpsConnection::NewL() End" ) ); + return self; + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::~CImpsConnection() +// --------------------------------------------------------------------------- +// +CImpsConnection::~CImpsConnection() + { + IMPS_DP( D_IMPS_LIT( "CImpsConnection::~CImpsConnection() Start" ) ); + + delete iConnMan; + delete iPresFeatures; + + IMPS_DP( D_IMPS_LIT( "CImpsConnection::~CImpsConnection() End" ) ); + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::GetInterface() +// --------------------------------------------------------------------------- +// +TAny* CImpsConnection::GetInterface( TInt32 aInterfaceId, + TIfGetOps aOptions ) + { + IMPS_DP( D_IMPS_LIT( "CImpsConnection::GetInterface() Start" ) ); + if ( aInterfaceId == MXIMPProtocolConnection::KInterfaceId ) + { + MXIMPProtocolConnection* self = this; + return self; + } + + if ( aOptions == MXIMPBase::EPanicIfUnknown ) + + { + User::Panic( KImpsConnection, KErrExtensionNotSupported ); + } + + IMPS_DP( D_IMPS_LIT( "CImpsConnection::GetInterface() End" ) ); + return NULL; + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::GetInterface() +// --------------------------------------------------------------------------- +// +const TAny* CImpsConnection::GetInterface( TInt32 aInterfaceId, + TIfGetOps aOptions ) const + { + IMPS_DP( D_IMPS_LIT( "CImpsConnection::GetInterface() const Start" ) ); + + if ( aInterfaceId == MXIMPProtocolConnection::KInterfaceId ) + { + const MXIMPProtocolConnection* self = this; + return self; + } + + if ( aOptions == MXIMPBase::EPanicIfUnknown ) + { + User::Panic( KImpsConnection, KErrExtensionNotSupported ); + } + + IMPS_DP( D_IMPS_LIT( "CImpsConnection::GetInterface() const End" ) ); + return NULL; + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::NewInstanceLC() +// --------------------------------------------------------------------------- +// +TInt32 CImpsConnection::GetInterfaceId() const + { + IMPS_DP( D_IMPS_LIT( "CImpsConnection::GetInterfaceId() Start-End" ) ); + return MXIMPProtocolConnection::KInterfaceId; + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::PrimeHost() +// --------------------------------------------------------------------------- +// +void CImpsConnection::PrimeHost( MXIMPProtocolConnectionHost& aHost ) + { + IMPS_DP( D_IMPS_LIT( "CImpsConnection::PrimeHost() Start" ) ); + + iConnMan->SetHost( aHost ); + + IMPS_DP( D_IMPS_LIT( "CImpsConnection::PrimeHost() Start" ) ); + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::OpenSessionL() +// --------------------------------------------------------------------------- +// +void CImpsConnection::OpenSessionL( + const MXIMPContextClientInfo& aClientCtxInfo, + TXIMPRequestId aOpId ) + { + IMPS_DP( D_IMPS_LIT( "CImpsConnection::OpenSessionL() Start" ) ); + + IMPSPRTPLUGIN_UNUSED_PARAM( aClientCtxInfo ); + + iConnMan->ReserveSpaceForOneMoreRequestL(); + + CImpsPluginLoginRequest* req = + CImpsPluginLoginRequest::NewLC( *iConnMan, aOpId ); + CleanupStack::Check( req ); + + req->IssueLoginRequestL(); + + iConnMan->AddRequest( req ); + CleanupStack::Pop( req ); + + IMPS_DP( D_IMPS_LIT( "CImpsConnection::OpenSessionL() End" ) ); + } + +// --------------------------------------------------------------------------- +// CImpsConnection::OpenSessionL() +// --------------------------------------------------------------------------- +// +void CImpsConnection::OpenSessionL( const TInt& aSettingsId, + TXIMPRequestId aReqId ) + { + // not supported + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::CloseSession() +// --------------------------------------------------------------------------- +// +void CImpsConnection::CloseSession( + const MXIMPContextClientInfo& aClientCtxInfo, + TXIMPRequestId aOpId ) + { + IMPS_DP( D_IMPS_LIT( "CImpsConnection::CloseSession() Start" ) ); + + IMPSPRTPLUGIN_UNUSED_PARAM( aClientCtxInfo ); + + iConnMan->ReserveSpaceForOneMoreRequestL(); + + CImpsPluginLogoutRequest* req = + CImpsPluginLogoutRequest::NewLC( *iConnMan, aOpId ); + CleanupStack::Check( req ); + + req->IssueLogoutRequestL(); + + iConnMan->AddRequest( req ); + CleanupStack::Pop( req ); + + IMPS_DP( D_IMPS_LIT( "CImpsConnection::CloseSession() End" ) ); + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::ReOpenSessionsL() +// --------------------------------------------------------------------------- +// +void CImpsConnection::ReOpenSessionsL( TXIMPRequestId aOpId ) + { + IMPS_DP_TXT( "CImpsConnection::ReOpenSessionsL() Start" ); + + iConnMan->ReserveSpaceForOneMoreRequestL(); + + CImpsPluginLoginRequest* req = + CImpsPluginLoginRequest::NewLC( *iConnMan, aOpId ); + CleanupStack::Check( req ); + + req->IssueLoginRequestL(); + + iConnMan->AddRequest( req ); + CleanupStack::Pop( req ); + + IMPS_DP( D_IMPS_LIT( "CImpsConnection::ReOpenSessionsL() End" ) ); + } + + +// --------------------------------------------------------------------------- +// CImpsConnection::GetSupportedFeaturesL() +// --------------------------------------------------------------------------- +// +void CImpsConnection::GetSupportedFeaturesL( CDesC8Array& aFeatures ) const + { + IMPS_DP_TXT( "CImpsConnection::GetSupportedFeaturesL() Start End" ); + // first empty the whole array + aFeatures.Reset(); + + // then add our features there + aFeatures.AppendL( KConnectionFeacture ); + IMPS_DP_TXT( "CImpsConnection::GetSupportedFeaturesL" ); + } +// --------------------------------------------------------------------------- +// CImpsConnection::ProtocolPresenceFeatures() +// --------------------------------------------------------------------------- +// +MProtocolPresenceFeatures& CImpsConnection::ProtocolPresenceFeatures() + { + IMPS_DP_TXT( "CImpsConnection::ProtocolPresenceFeatures() Start End" ); + return *iPresFeatures; + + // Fix warning: #111-D: statement is unreachable + // IMPS_DP_TXT("CImpsConnection::ProtocolPresenceFeatures"); + } + +// --------------------------------------------------------------------------- +// CImpsConnection::GetProtocolInterface +// --------------------------------------------------------------------------- +// +TAny* CImpsConnection::GetProtocolInterface( TInt /*aInterfaceId*/ ) + { + IMPS_DP_TXT( "CImpsConnection::GetProtocolInterface() Start End" ); + // not supported + return NULL; + } + +// End of file +