--- a/presencefwsimpleadpt/src/simplepluginconnection.cpp Thu Aug 19 10:19:02 2010 +0300
+++ /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 <e32std.h>
-
-#include <ximpstatus.h>
-#include <ximpserviceinfo.h>
-#include <ximpcontextclientinfo.h>
-#include <ximpprotocolconnectionhost.h>
-#include <ximpfeatureinfo.h>
-#include <ximpidentity.h>
-#include <ximperrors.hrh>
-#include <presenceerrors.hrh>
-
-#include <protocolpresencedatahost.h>
-
-#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;
- }
-
-/*<branchInfo originator="gronoff" since="08-06-06" category="new_feature" error=”none”>
-<pf_5250_OFF_CYCLE_SW_INT>
-</branchInfo>*/
-// 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
-