diff -r 77cb48a03620 -r d9861ae9169c presencefwsimpleadpt/src/simplepluginconnection.cpp --- a/presencefwsimpleadpt/src/simplepluginconnection.cpp Thu Jul 01 14:09:06 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,573 +0,0 @@ -/* -* 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: SIMPLE Protocol implementation for Presence Framework -* -*/ - - - - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "simplepluginconnection.h" -#include "simplepluginsession.h" -#include "simpleplugindebugutils.h" -#include "simplepluginauthorization.h" -#include "simplepluginwinfo.h" -#include "simplepluginpublisher.h" -#include "simplepluginwatcher.h" -#include "simpleplugingroups.h" -#include "simplepluginxdmutils.h" -#include "simplepluginvariation.h" -#include "msimplepluginconnectionobs.h" -#include "msimplepluginsettings.h" -#include "simpleerrors.h" - -class MXIMPObjectFactory; - -// ======== MEMBER FUNCTIONS ======== - - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CSimplePluginConnection -// --------------------------------------------------------------------------- -// -CSimplePluginConnection::CSimplePluginConnection() -: iSipPresentity(NULL) - { - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::NewL -// --------------------------------------------------------------------------- -// -CSimplePluginConnection* CSimplePluginConnection::NewL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& aClientCtxInfo ) - { - CSimplePluginConnection* self = new( ELeave ) CSimplePluginConnection( ); - CleanupStack::PushL( self ); - self->ConstructL( aServiceInfo, aClientCtxInfo ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::ConstructL -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::ConstructL( - const MXIMPServiceInfo& aServiceInfo, - const MXIMPContextClientInfo& /* aClientCtxInfo */ ) - { - iSession = CSimplePluginSession::NewL( aServiceInfo, *this ); - - iAuth = CSimplePluginAuthorization::NewL( *this ); - - iPublisher = CSimplePluginPublisher::NewL( - *this, *this, - *iSession->SimpleConnection() ); - - iWatcher = CSimplePluginWatcher::NewL( - *this, *this, - *iSession->SimpleConnection() ); - - iGroups = CSimplePluginGroups::NewL( - *this ); - - iPluginWinfo = CSimplePluginWinfo::NewL( - *this, *(iSession->SimpleConnection())); - - iVariation = CSimplePluginVariation::NewL(); - iVariation->InitL(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::~CSimplePluginConnection -// --------------------------------------------------------------------------- -// -CSimplePluginConnection::~CSimplePluginConnection() - { - - delete iSipPresentity; - - delete iVariation; - delete iPluginWinfo; - delete iWatcher; - delete iPublisher; - delete iAuth; - delete iGroups; - delete iSession; - - delete iXdmUtils; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PrimeHost -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::PrimeHost( MXIMPProtocolConnectionHost& aHost ) - { - iConnectionHost = &aHost; - iAuth->SetDataHost( iConnectionHost->ProtocolPresenceDataHost().AuthorizationDataHost() ); - } - - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::ProtocolPresenceFeatures -// --------------------------------------------------------------------------- -// -MProtocolPresenceFeatures& CSimplePluginConnection::ProtocolPresenceFeatures() - { - return *this; - } - -/* - -*/ -// BRANCH 08-06-17 : gronoff -// --------------------------------------------------------------------------- -// CPresencePluginConnection::GetProtocolInterface() -// --------------------------------------------------------------------------- -// -TAny* CSimplePluginConnection::GetProtocolInterface( TInt /*aInterfaceId*/ ) - { - return NULL; - } -// BRANCH_END 08-06-17 : gronoff - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PresenceWatching -// --------------------------------------------------------------------------- -// -MProtocolPresenceWatching& CSimplePluginConnection::PresenceWatching() - { - return *iWatcher; - } -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PresencePublishing -// --------------------------------------------------------------------------- -// -MProtocolPresencePublishing& CSimplePluginConnection::PresencePublishing() - { - return *iPublisher; - } -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PresentityGroups -// --------------------------------------------------------------------------- -// -MProtocolPresentityGroups& CSimplePluginConnection::PresentityGroups() - { - return *iGroups; - } -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PresenceAuthorization -// --------------------------------------------------------------------------- -// -MProtocolPresenceAuthorization& CSimplePluginConnection::PresenceAuthorization() - { - return *iAuth; - } - - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::OpenSessionL -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::OpenSessionL( - const TInt& aSettingsId, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: OpenSessionL")); -#endif - iPrFwId = aReqId; - TRAPD( err, iSession->OpenSessionL( aSettingsId )); - if ( err ) - { - User::Leave( CSimplePluginConnection::HarmonizeErrorCode( err )); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::OpenSessionL -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::OpenSessionL( - const MXIMPContextClientInfo& /*aClientCtxInfo*/, - TXIMPRequestId /*aReqId*/ ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: OpenSessionL - error: not supported")); -#endif - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CloseSession -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::CloseSession( - const MXIMPContextClientInfo& /*aClientCtxInfo*/, - TXIMPRequestId aReqId ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CloseSession")); -#endif - iPrFwId = aReqId; - - delete iPluginWinfo; - iPluginWinfo = NULL; - delete iWatcher; - iWatcher = NULL; - delete iPublisher; - iPublisher = NULL; - delete iAuth; - iAuth = NULL; - delete iSession; - iSession = NULL; - delete iGroups; - iGroups = NULL; - delete iXdmUtils; - iXdmUtils = NULL; - - CompleteReq( iPrFwId, KErrNone ); - } -// --------------------------------------------------------------------------- -// CSimplePluginConnection::GetSupportedFeaturesL -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::GetSupportedFeaturesL( CDesC8Array& aFeatures ) const - { - // first empty the whole array - aFeatures.Reset(); - using namespace NXIMPFeature::Presence; - aFeatures.AppendL( KPublish ); - aFeatures.AppendL( KFetch ); - aFeatures.AppendL( KSubscribe ); - aFeatures.AppendL( KUnsubscribe ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CompleteReq -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::CompleteReq( TReqType aType, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CompleteReq stat=%d"), aStatus); -#endif - - TInt retVal = HarmonizeErrorCode( aStatus ); - - // Return immediately if PrimeHost() is not called. This is for testing purposes. - if ( !iConnectionHost ) - { - iPrFwId = TXIMPRequestId(); - return; - } - - switch ( aType ) - { - case EOpenSess: -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginConnection: callback HandleRequestCompleted stat=%d"), retVal); - PluginLogger::Log( - _L("PluginConnection: ------------------------------------------------1")); -#endif - iConnectionHost->HandleRequestCompleted( iPrFwId, retVal ); - iPrFwId = TXIMPRequestId(); - break; - default: - break; - }; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CompleteReq -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::CompleteReq( TXIMPRequestId aReqId, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CompleteReq stat=%d"), aStatus); -#endif - - TInt retVal = HarmonizeErrorCode( aStatus ); - - // Return immediately if PrimeHost() is not called. This is for testing purposes. - if ( !iConnectionHost ) - { - return; - } -#ifdef _DEBUG - PluginLogger::Log( - _L("PluginConnection: callback HandleRequestCompleted stat=%d"), retVal); - PluginLogger::Log( - _L("PluginConnection: ------------------------------------------------2")); -#endif - iConnectionHost->HandleRequestCompleted( aReqId, retVal ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CompleteWinfoReq -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::CompleteWinfoReq( TXIMPRequestId aReqId, TInt aStatus ) - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CompleteWinfoReq stat=%d"), aStatus); -#endif - - if ( iAuth && iAuth->HandleIfMine( aReqId, aStatus )) - { - // Nothing to do, the request in not complete yet -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CompleteWinfoReq waits ***"), aStatus); -#endif - } - else - { -#ifdef _DEBUG - PluginLogger::Log(_L("PluginConnection: CompleteWinfoReq completes ***"), aStatus); -#endif - CompleteReq( aReqId, aStatus ); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::ObjectFactory -// --------------------------------------------------------------------------- -// -MXIMPObjectFactory& CSimplePluginConnection::ObjectFactory() - { - return iConnectionHost->ObjectFactory(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::PresenceObjectFactory -// --------------------------------------------------------------------------- -// -MPresenceObjectFactory& CSimplePluginConnection::PresenceObjectFactory() - { - return iConnectionHost->ProtocolPresenceDataHost().PresenceObjectFactory(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::Host -// --------------------------------------------------------------------------- -// -MXIMPProtocolConnectionHost* CSimplePluginConnection::Host() - { - return iConnectionHost; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CurrentDomain -// --------------------------------------------------------------------------- -// -TPtrC16 CSimplePluginConnection::CurrentDomain() - { - return iSession->CurrentDomain(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::Variation -// --------------------------------------------------------------------------- -// -CSimplePluginVariation& CSimplePluginConnection::Variation() - { - return *iVariation; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CurrentSipPresentity -// --------------------------------------------------------------------------- -// -TPtrC16 CSimplePluginConnection::CurrentSipPresentity() - { - delete iSipPresentity; - iSipPresentity = NULL; - TRAPD( err, iSipPresentity = HBufC16::NewL( iSession->CurrentSipPresentity().Length() )); - - if ( !err ) - { - iSipPresentity->Des().Copy( iSession->CurrentSipPresentity() ); - return iSipPresentity->Des(); - } - else - { - return TPtrC16(); - } - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::CurrentSipPresentit8 -// --------------------------------------------------------------------------- -// -TPtrC8 CSimplePluginConnection::CurrentSipPresentity8() - { - return iSession->CurrentSipPresentity(); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::XdmUtilsL -// --------------------------------------------------------------------------- -// -CSimplePluginXdmUtils* CSimplePluginConnection::XdmUtilsL() - { - if ( !iXdmUtils ) - { - iXdmUtils = CSimplePluginXdmUtils::NewL( - *this, iSession->XdmSettingsId() ); - } - return iXdmUtils; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::WinfoHandlerL -// --------------------------------------------------------------------------- -// -CSimplePluginWinfo* CSimplePluginConnection::WinfoHandlerL() - { - if ( !iPluginWinfo ) - { - iPluginWinfo = CSimplePluginWinfo::NewL( - *this, *(iSession->SimpleConnection() )); - } - iPluginWinfo->SetHost( iConnectionHost ); - return iPluginWinfo; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::WinfoTerminatedL -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::WinfoTerminatedL( TInt aReason ) - { - // Pass the information to iAuth and iPublisher, - // so that they can call PrFw Plugin Data Host callbacks. - iAuth->WinfoTerminatedL( aReason ); - iPublisher->WinfoTerminatedL( aReason ); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::WinfoNotification -// --------------------------------------------------------------------------- -// -void CSimplePluginConnection::WinfoNotification( MSimpleWinfo& aWinfo ) - { - TRAP_IGNORE( iPublisher->WinfoNotificationL( aWinfo )); - TRAP_IGNORE( iAuth->WinfoNotificationL( aWinfo )); - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::GetInterface -// --------------------------------------------------------------------------- -// -TAny* CSimplePluginConnection::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - MXIMPProtocolConnection* myIf = this; - return myIf; - } - if( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::GetInterface -// --------------------------------------------------------------------------- -// -const TAny* CSimplePluginConnection::GetInterface( - TInt32 aInterfaceId, - TIfGetOps aOptions ) const - { - if ( aInterfaceId == GetInterfaceId() ) - { - // caller wants this interface - const MXIMPProtocolConnection* myIf = this; - return myIf; - } - if( aOptions == MXIMPBase::EPanicIfUnknown ) - { - User::Panic( _L("CSimplePlugin"), KErrExtensionNotSupported ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::GetInterfaceId -// --------------------------------------------------------------------------- -// -TInt32 CSimplePluginConnection::GetInterfaceId() const - { - return MXIMPProtocolConnection::KInterfaceId; - } - -// --------------------------------------------------------------------------- -// CSimplePluginConnection::HarmonizeErrorCode -// --------------------------------------------------------------------------- -// -TInt CSimplePluginConnection::HarmonizeErrorCode( TInt aStatus ) - { - - TInt retVal = aStatus; - - // Convert error codes outsise e32err.h error range into PrFw errors. - - switch ( aStatus ) - { - case KSimpleErrAuthorization: - retVal = KPresenceErrNotEnoughCredits; - break; - case KSimpleErrTimeout: - case KErrTimedOut: - retVal = KXIMPErrServicRequestTimeouted; - break; - default: - { - if ( aStatus < KSimplePluginGeneralErrorLow ) - { - retVal = KXIMPErrServiceGeneralError; - } - } - break; - }; - - return retVal; - } - - -// End of file -