simpledatamodeladapter/src/presencepluginconnection.cpp
branchRCL_3
changeset 17 2669f8761a99
parent 16 2580314736af
child 18 fbd2e7cec7ef
--- a/simpledatamodeladapter/src/presencepluginconnection.cpp	Thu Aug 19 10:19:02 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,981 +0,0 @@
-/*
-* Copyright (c) 2006-2010 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:  IETF SIMPLE Protocol implementation for XIMP Framework
-*
-*/
-
-
-#include <badesca.h>
-#include <ximpbase.h>
-#include <ximpserviceinfo.h>
-#include <protocolpresencefeatures.h>
-#include <cprotocolimfeatures.h>
-#include <protocolpresencedatahost.h>
-#include <presenceobjectfactory.h>  
-
-#include <ximpcontextclientinfo.h>		
-#include <protocolpresenceauthorization.h>  
-#include <ximpprotocolconnectionhost.h>			   
-#include <ximpfeatureinfo.h> //for etc. KPublish
-#include <msimpleconnection.h> //Part of Registration API from SIMPLE engine
-#include <msimpleconnectionobserver.h>//Connection callback methods
-#include <presenceinfo.h>
-
-#include "presencepluginconnection.h"
-#include "presencepluginsession.h" 
-#include "mpresencepluginconnectionobs.h"   
-#include "presencepluginwatcher.h"
-#include "presencepluginauthorization.h"
-#include "presencepluginwinfo.h"
-#include "presencepluginpublisher.h"
-#include "presenceplugingroup.h"
-#include "presencepluginxdmutils.h"
-#include "presencepluginvirtualgroup.h"
-#include "presenceconnectioninfo.h"
-#include "presenceplugindata.h"
-
-#include "simpleimpluginuids.hrh" //KImplUidSimpleImPlugin
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::CPresencePluginConnection()
-// ---------------------------------------------------------------------------
-//
-CPresencePluginConnection::CPresencePluginConnection( ): 
-	CActive( CActive::EPriorityHigh ), iSipPresentity(NULL),
-    iStopPublishState( EFalse ), iGrantListSubs( EFalse ), iStopPublishCall( EFalse ),
-    iTerminatedCall( EFalse )
-    {
-    DP_SDA("CPresencePluginConnection::CPresencePluginConnection");
-    CActiveScheduler::Add(this);
-    iOwnTupleId = 0;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::NewL()
-// ---------------------------------------------------------------------------
-//
-CPresencePluginConnection* CPresencePluginConnection::NewL(
-    const MXIMPServiceInfo& aServiceInfo,
-    const MXIMPContextClientInfo& aClientCtxInfo )
-    {
-    DP_SDA("CPresencePluginConnection::NewL");
-    CPresencePluginConnection* self = 
-        new( ELeave ) CPresencePluginConnection( );
-    CleanupStack::PushL( self );
-    self->ConstructL( aServiceInfo, aClientCtxInfo );
-    CleanupStack::Pop( self );    
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::NewL() loaded
-// ---------------------------------------------------------------------------
-//
-CPresencePluginConnection* CPresencePluginConnection::NewL(
-    const MXIMPServiceInfo& aServiceInfo,
-    const MXIMPContextClientInfo& aClientCtxInfo,
-    const TDesC8& aETag )
-    {
-    DP_SDA("CPresencePluginConnection::NewL loaded");
-    CPresencePluginConnection* self = 
-        new( ELeave ) CPresencePluginConnection( );
-    CleanupStack::PushL( self );
-    self->ConstructL( aServiceInfo, aClientCtxInfo, aETag );
-    CleanupStack::Pop( self );    
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::ConstructL() loaded
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::ConstructL(
-    const MXIMPServiceInfo& aServiceInfo,
-    const MXIMPContextClientInfo& /*aClientCtxInfo*/,
-    const TDesC8& aETag )
-    {
-    DP_SDA("CPresencePluginConnection::ConstructL loaded");
-    
-    iETag = aETag.AllocL();                  
-    
-    iSession = CPresencePluginSession::NewL( aServiceInfo, *this );
-            
-    // create instance from data class
-    iPresenceData = CPresencePluginData::NewL( *this,
-        aServiceInfo.IapId() ); 
-    
-    DP_SDA("ConstructL create subscribed buddy list loaded ");  
-    // create another virtual group for all subscribed buddyes
-    iSubscribedBuddys =
-        CPresencePluginVirtualGroup::NewL( *this, 
-        KPresenceBuddyList(),
-        iPresenceData );
-
-    iAuth = CPresencePluginAuthorization::NewL( *this, iPresenceData );
-    
-    iPublisher = CPresencePluginPublisher::NewL(
-               *this,        
-               *iSession->SimpleConnection(),
-               iPresenceData );
-    
-    iWatcher = CPresencePluginWatcher::NewL(
-               *this,
-               *iSession->SimpleConnection(),
-               iPresenceData ); 
-    
-    iGroups = CPresencePluginGroups::NewL( 
-        *this, iSubscribedBuddys, iPresenceData );
-    
-    iPluginWinfo = CPresencePluginWinfo::NewL( 
-                 *this, *(iSession->SimpleConnection() ));
-    
-    }    
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::ConstructL(
-    const MXIMPServiceInfo& aServiceInfo,
-    const MXIMPContextClientInfo& /*aClientCtxInfo*/ )
-    {
-    DP_SDA("CPresencePluginConnection::ConstructL");
-     
-    iETag = KNullDesC8().AllocL();                  
-    
-    iSession = CPresencePluginSession::NewL( aServiceInfo, *this );
-            
-    // create instance from data class
-    iPresenceData = CPresencePluginData::NewL( *this, 
-        aServiceInfo.IapId() ); 
-
-    DP_SDA("ConstructL create subscribed buddy list");	
-    // create another virtual group for all subscribed buddyes
-    iSubscribedBuddys =
-    	CPresencePluginVirtualGroup::NewL( 
-    	    *this, KPresenceBuddyList(), iPresenceData );
-
-    iAuth = CPresencePluginAuthorization::NewL( *this, iPresenceData );
-    
-    iPublisher = CPresencePluginPublisher::NewL(
-               *this,        
-               *iSession->SimpleConnection(),
-               iPresenceData );
-    
-    iWatcher = CPresencePluginWatcher::NewL(
-               *this,
-               *iSession->SimpleConnection(),
-               iPresenceData ); 
-      
-    iGroups = CPresencePluginGroups::NewL( 
-        *this, iSubscribedBuddys, iPresenceData );
-    
-    iPluginWinfo = CPresencePluginWinfo::NewL( 
-                 *this, *(iSession->SimpleConnection() ));   
-                                      
-    }    
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::~CPresencePluginConnection()
-// ---------------------------------------------------------------------------
-//
-CPresencePluginConnection::~CPresencePluginConnection()
-    {
-    DP_SDA("CPresencePluginConnection::~CPresencePluginConnection");
-    
-    Cancel();
-    
-    delete iSipPresentity;
-    iSipPresentity = NULL;
-    
-    delete iPluginWinfo;
-    iPluginWinfo = NULL;
-    
-    delete iWatcher;
-    iWatcher = NULL;
-    
-    delete iPublisher;
-    iPublisher = NULL;
-    
-    delete iAuth;
-    iAuth = NULL;
-    
-    delete iGroups;
-    iGroups = NULL;
-    
-    delete iSession;
-    iSession = NULL;
-    
-    delete iImFeatures;
-    
-    REComSession::FinalClose();
-    
-    delete iSubscribedBuddys;
-    delete iPresenceData;
-    
-    delete iETag;
-    iETag = NULL;
-    DP_SDA("CPresencePluginConnection::~CPresencePluginConnection end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::PrimeHost
-// ---------------------------------------------------------------------------
-//  
-void CPresencePluginConnection::PrimeHost( 
-    MXIMPProtocolConnectionHost& aHost )
-    {
-    DP_SDA("CPresencePluginConnection::PrimeHost");
-    iConnectionHost = &aHost;
-    iAuth->SetDataHost( 
-        iConnectionHost->ProtocolPresenceDataHost().AuthorizationDataHost() );  
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GetOnlineBuddyGroup()
-// ---------------------------------------------------------------------------
-//
-CPresencePluginVirtualGroup* CPresencePluginConnection::SubscribedContacts( )
-    {
-    return iSubscribedBuddys;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GetSessionStatus()
-// ---------------------------------------------------------------------------
-//
-TBool CPresencePluginConnection::GetSessionStatus( )
-    {
-    return iSession->ConnectionStatus();
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::TupleIdGet()
-// ---------------------------------------------------------------------------
-//
-TInt CPresencePluginConnection::GetTupleId() const
-    {
-    DP_SDA("CPresencePluginConnection::TupleIdGet");
-    return iOwnTupleId;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GetEtag()
-// ---------------------------------------------------------------------------
-//    
-const TDesC8& CPresencePluginConnection::GetETag() const
-    {
-    DP_SDA("CPresencePluginConnection::GetETag");
-    
-    if( !iETag )
-        {
-        DP_SDA2("CPresencePluginConnection::GetETag empty ??? %S", iConnectionArray->GetConnectionEtag() );
-        return  KNullDesC8();
-        }
-
-    return *iETag;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::SetETag()
-// ---------------------------------------------------------------------------
-//    
-void CPresencePluginConnection::SetETag( const TDesC8& aETag )
-    {
-    DP_SDA("CPresencePluginConnection::SetETag");
-    delete iETag;
-    iETag = NULL;
-        
-    TRAP_IGNORE( ( iETag = aETag.AllocL() ) );
-    //Add etag also in connectionArray
-    iConnectionArray->SetConnectionETag( *iETag );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::SetConnectionArray()
-// ---------------------------------------------------------------------------
-//    
-void CPresencePluginConnection::SetConnectionArray( 
-		CPresenceConnectionInfo* aArray )
-    {
-    DP_SDA("CPresencePluginConnection::SetConnectionArray");
-    iConnectionArray = aArray;
-    iConnectionArray->SetConnectionStatus( EActive );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GetConnectionArray()
-// ---------------------------------------------------------------------------
-//    
-CPresenceConnectionInfo* CPresencePluginConnection::GetConnectionArray( )
-    {
-    DP_SDA("CPresencePluginConnection::GetConnectionArray");
-    return iConnectionArray;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::TupleIdGet()
-// ---------------------------------------------------------------------------
-//
-TInt32 CPresencePluginConnection::GetPresenceSetId() const
-    {
-    DP_SDA("CPresencePluginConnection::GetPresenceSetId");
-    return iSession->GetPresenceSetId();
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::TupleIdGet()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::SetTupleId( const TInt aTupleId )
-    {
-    DP_SDA("CPresencePluginConnection::TupleIdSet");
-    iOwnTupleId = aTupleId;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GetStopPublishState()
-// ---------------------------------------------------------------------------
-//    
-TBool CPresencePluginConnection::GetStopPublishState()
-    {
-    DP_SDA2("::GetStopPublishState = %d", (TInt)iStopPublishState );
-    return iStopPublishState;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::SetStopPublishState()
-// ---------------------------------------------------------------------------
-// 
-void CPresencePluginConnection::SetStopPublishState( TBool aState )
-    {
-    DP_SDA2("SetStopPublishState : aState = %d ",  (TInt)aState );
-    iStopPublishState = aState;
-    }
-            
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::PresenceWatching
-// ---------------------------------------------------------------------------
-//    
-MProtocolPresenceDataHost& CPresencePluginConnection::ProtocolPresenceHost()
-    {
-    DP_SDA("CPresencePluginConnection::ProtocolPresenceHost");
-    return iConnectionHost->ProtocolPresenceDataHost();
-    }
-     
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::PresenceWatching
-// ---------------------------------------------------------------------------
-//    
-MProtocolPresenceWatching& CPresencePluginConnection::PresenceWatching()
-    {
-    DP_SDA("CPresencePluginConnection::PresenceWatching");
-    return *iWatcher;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::PresencePublishing
-// ---------------------------------------------------------------------------
-//   
- MProtocolPresencePublishing& CPresencePluginConnection::PresencePublishing()
-    {
-    return *iPublisher;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::PresentityGroups
-// ---------------------------------------------------------------------------
-//   
-MProtocolPresentityGroups& CPresencePluginConnection::PresentityGroups()
-    {
-    return *iGroups;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::PresenceAuthorization
-// ---------------------------------------------------------------------------
-//   
-MProtocolPresenceAuthorization& 
-    CPresencePluginConnection::PresenceAuthorization()
-    {
-    DP_SDA2("CPresencePluginConnection::PresenceAuthorization %x", iAuth);
-    return *iAuth;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::InternalPresenceAuthorization
-// ---------------------------------------------------------------------------
-//       
-CPresencePluginAuthorization& 
-    CPresencePluginConnection::InternalPresenceAuthorization()
-    {
-    DP_SDA2("CPresencePluginConnection::InternalPresenceAuthorization %x", iAuth);
-    return *iAuth;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::OpenSessionL
-// ---------------------------------------------------------------------------
-//     
-void CPresencePluginConnection::OpenSessionL( 
-    const MXIMPContextClientInfo& /*aClientCtxInfo*/,
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginConnection::OpenSessionL");
-    iGrantListSubs = ETrue; 
-    iTerminatedCall = EFalse;
-    iXIMPId = aReqId;
-    iSession->OpenSessionL();         
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::OpenSessionL
-// ---------------------------------------------------------------------------
-// 
-void CPresencePluginConnection::OpenSessionL( const TInt& /*aSettingsId*/,
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginConnection::OpenSessionL 2 ");
-    iXIMPId = aReqId;
-    iGrantListSubs = ETrue; 
-    iTerminatedCall = EFalse;
-    iSession->OpenSessionL( ); 
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::CloseSession
-// ---------------------------------------------------------------------------
-//    
-void CPresencePluginConnection::CloseSession( 
-    const MXIMPContextClientInfo& /*aContextClient*/,
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginConnection::CloseSession begin");
-    
-    TBool completeXimpRequestNow( EFalse );
-    iConnectionArray->DecreaseClientCount();
-    iXIMPId = aReqId;
-        
-    // Client count canīt be negative. Increase if goes negative.
-    // This happens for example in network lost case.
-    // This method is called then because connection is terminated and
-    // for all clients which have done unbind. But here we cannot tell
-    // if this method is called by clients unbind or connection termination
-    // therefore this workaround needed.
-    if ( iConnectionArray->ClientCount() < 0 )
-        {        
-        completeXimpRequestNow = ETrue;
-        iConnectionArray->IncreaseClientCount();
-        }
-    
-    // In case there is no more clients we cannot complete Ximp request
-    // right away. We have to stop publish first, Ximp request completion is
-    // handled in RunL after that is done.
-    if( KErrNone == iConnectionArray->ClientCount() && 
-        (EActive == iConnectionArray->GetConnectionStatus()) )
-        {       
-        completeXimpRequestNow = EFalse; // request is completed later in RunL
-        iGrantListSubs = EFalse;
-        
-        //Start stopPublish request
-        DeRegister();
-        }
-        
-    if ( !iStopPublishCall )
-       {
-       completeXimpRequestNow = ETrue;
-       }
-    
-    if ( completeXimpRequestNow )
-        {
-        CompleteReq( iXIMPId, KErrNone );
-        }
-
-    DP_SDA("CPresencePluginConnection::CloseSession end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GetSupportedFeaturesL
-// ---------------------------------------------------------------------------
-//     
-void CPresencePluginConnection::GetSupportedFeaturesL( 
-    CDesC8Array& aFeatures ) const
-    {
-    DP_SDA("CPresencePluginConnection::GetSupportedFeaturesL");
-    // first empty the whole array
-    aFeatures.Reset();   
-    using namespace NXIMPFeature::Presence;    
-    aFeatures.AppendL( KPublish );
-    aFeatures.AppendL( KSubscribe );    
-    aFeatures.AppendL( KUnsubscribe );  
-    aFeatures.AppendL( KAddContact );
-    aFeatures.AppendL( KDeleteContact );
-    aFeatures.AppendL( KFetch );
-    aFeatures.AppendL( KBlock );
-    aFeatures.AppendL( KUnBlock );
-    
-    if( iImFeatures )
-        {
-        using namespace NXIMPFeature::InstantMessage;
-        aFeatures.AppendL( KInstantMessage );
-        }
-    }
-
-//*****************************************************************************
-//*  FROM MPresencePluginConnectionObs
-//*****************************************************************************  
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::CompleteReq()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::CompleteReq( TReqType aType, TInt aStatus )
-    {
-    DP_SDA("CPresencePluginConnection::CompleteReq");
-    // Return immediately if PrimeHost() is not called.
-    if ( !iConnectionHost )
-        {
-        DP_SDA("CPresencePluginConnection::CompleteReq !iConnectionHost");
-        iXIMPId = TXIMPRequestId(); 
-        return;
-        }
-                      
-    switch ( aType )
-        {
-        case EOpenSess:
-            {
-            DP_SDA("CPresencePluginConnection::CompleteReq EOpenSess");          
-            iConnectionHost->HandleRequestCompleted( iXIMPId, aStatus );
-            iXIMPId = TXIMPRequestId();
-            //Set connection status to connection Array
-            iConnectionArray->SetConnectionStatus( EActive );
-            }
-            break;
-        case ECloseSess:
-            {
-            DP_SDA("CPresencePluginConnection::CompleteReq ECloseSess"); 
-            iConnectionArray->DecreaseClientCount();
-            CompleteReq( iXIMPId, aStatus );
-            iConnectionArray->SetConnectionStatus( ENotActive );
-            }
-            break;
-        default:
-            DP_SDA("CPresencePluginConnection::CompleteReq DEFAULT");  
-            break;   
-        };
-    DP_SDA("CPresencePluginConnection::CompleteReq end"); 
-    }
-        
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::CompleteReq()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::CompleteReq( 
-    TXIMPRequestId aReqId,
-    TInt aStatus )
-    { 
-    DP_SDA2("CPresencePluginConnection::CompleteReq status %d", aStatus); 
-    // Return immediately if PrimeHost() is not called.
-    if ( !iConnectionHost )
-        {
-        DP_SDA("CPresencePluginConnection::CompleteReq return"); 
-        return;
-        }               
-    DP_SDA("CPresencePluginConnection::CompleteReq complete");               
-    iConnectionHost->HandleRequestCompleted( aReqId, aStatus );
-    } 
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::ObjectFactory()
-// ---------------------------------------------------------------------------
-// 
-MXIMPObjectFactory& CPresencePluginConnection::ObjectFactory()
-    {
-    DP_SDA("CPresencePluginConnection::ObjectFactory");
-    return iConnectionHost->ObjectFactory();
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::Host
-// ---------------------------------------------------------------------------
-//     
-MXIMPProtocolConnectionHost* CPresencePluginConnection::Host()
-    {
-    DP_SDA("CPresencePluginConnection::Host");
-    return iConnectionHost;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection:CurrentDomain
-// ---------------------------------------------------------------------------
-//     
-TPtrC16 CPresencePluginConnection::CurrentDomain()
-    {
-    return iSession->CurrentDomain();    
-    } 
-     
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::CurrentSipPresentit8()
-// ---------------------------------------------------------------------------
-// 
-TPtrC8 CPresencePluginConnection::CurrentSipPresentity8()
-    {
-    return iSession->CurrentSipPresentity();
-    } 
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection:XdmUtilsL
-// ---------------------------------------------------------------------------
-//
-CPresencePluginXdmUtils* CPresencePluginConnection::XdmUtilsL()
-    {
-    DP_SDA("CPresencePluginConnection::XdmUtilsL");
-    return iSession->XdmUtilsL();
-    } 
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::WinfoHandlerL()
-// ---------------------------------------------------------------------------
-//
-CPresencePluginWinfo* CPresencePluginConnection::WinfoHandlerL()
-    {
-    DP_SDA("CPresencePluginConnection::WinfoHandlerL");
-    if ( !iPluginWinfo )
-        {
-        iPluginWinfo = CPresencePluginWinfo::NewL( 
-            *this, *(iSession->SimpleConnection() ));
-        }
-    
-    iPluginWinfo->SetHost( iConnectionHost );
-    return iPluginWinfo;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::WatcherHandlerL()
-// ---------------------------------------------------------------------------
-//    
- CPresencePluginWatcher* CPresencePluginConnection::WatcherHandlerL()
-    {
-    DP_SDA("CPresencePluginConnection::WatcherHandlerL");  
-    if ( !iWatcher )
-        {
-        DP_SDA("CPresencePluginConnection::WatcherHandlerL: if ( !iWatcher )");  
-        iWatcher = CPresencePluginWatcher::NewL(
-            *this,
-            *iSession->SimpleConnection(),
-            iPresenceData );
-        }
-    return iWatcher;
-    }
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::WinfoTerminatedL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::WinfoTerminatedL( TInt aReason )
-    {
-    DP_SDA("CPresencePluginConnection::WinfoTerminatedL");  
-    // Pass the information to iAuth and iPublisher,
-    // so that they can call XIMP Plugin Data Host callbacks.
-    iAuth->WinfoTerminatedL( aReason );
-    iPublisher->WinfoTerminatedL( aReason );
-    }  
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::WinfoNotification()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::WinfoNotification( MSimpleWinfo& aWinfo )
-    {
-    DP_SDA("CPresencePluginConnection::WinfoNotification");  
-    TRAP_IGNORE( iPublisher->WinfoNotificationL( aWinfo  ));
-    TRAP_IGNORE( iAuth->WinfoNotificationL( aWinfo ));
-    }      
-        
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GetInterface()
-// ---------------------------------------------------------------------------
-//
-TAny* CPresencePluginConnection::GetInterface(
-    TInt32 aInterfaceId,
-    TIfGetOps aOptions )
-    { 
-    DP_SDA("CPresencePluginConnection::GetInterface()");  
-    if ( aInterfaceId == GetInterfaceId() )
-        {
-        DP_SDA("CPresencePluginConnection::GetInterface()if ");
-        // caller wants this interface 
-        return this;
-        }
-    if ( aOptions == MXIMPBase::EPanicIfUnknown )
-        {
-        DP_SDA("CPresencePluginConnection::GetInterface() panic");  
-        User::Panic( KPluginName, KErrExtensionNotSupported );
-        }  
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GetInterface()
-// ---------------------------------------------------------------------------
-//
-const TAny* CPresencePluginConnection::GetInterface(
-    TInt32 aInterfaceId,
-    TIfGetOps aOptions ) const
-    {
-    DP_SDA("CPresencePluginConnection::GetInterface() const ");  
-    if ( aInterfaceId == GetInterfaceId() )
-        {
-        DP_SDA("CPresencePluginConnection::GetInterface()2 ");  
-        // caller wants this interface
-        return const_cast<CPresencePluginConnection*>(this);
-        }
-    if ( aOptions == MXIMPBase::EPanicIfUnknown )
-        {
-        DP_SDA("CPresencePluginConnection::GetInterface()panic 2");  
-        User::Panic( KPluginName, KErrExtensionNotSupported );
-        }  
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GetInterfaceId()
-// ---------------------------------------------------------------------------
-//
-TInt32 CPresencePluginConnection::GetInterfaceId() const
-    {
-    DP_SDA("CPresencePluginConnection::GetInterfaceId() const ");  
-    return MXIMPProtocolConnection::KInterfaceId;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::ProtocolPresenceFeatures()
-// ---------------------------------------------------------------------------
-//    
-MProtocolPresenceFeatures& CPresencePluginConnection::
-    ProtocolPresenceFeatures()           
-    {
-    DP_SDA("CPresencePluginConnection::ProtocolPresenceFeatures() ");  
-    return *this;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::PresenceObjectFactory()
-// ---------------------------------------------------------------------------
-// 
-MPresenceObjectFactory& CPresencePluginConnection::PresenceObjectFactoryOwn()
-    {
-    DP_SDA("CPresencePluginConnection::PresenceObjectFactoryOwn() ");  
-    return iConnectionHost->
-        ProtocolPresenceDataHost().PresenceObjectFactory();    
-    }  
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GrandListState()
-// ---------------------------------------------------------------------------
-// 
-TBool CPresencePluginConnection::GrandListState( )
-    {
-    DP_SDA2("GrandListState : iGrantListSubs = %d", (TInt)iGrantListSubs );
-    return iGrantListSubs;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::IsStopPublishCalled()
-// ---------------------------------------------------------------------------
-// 
-TBool CPresencePluginConnection::IsStopPublishCalled( )
-    {
-    DP_SDA("CPresencePluginConnection::IsStopPublishCalled");
-    return iStopPublishCall;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::TerminateConnectionL()
-// ---------------------------------------------------------------------------
-// 
-void CPresencePluginConnection::TerminateConnectionL( )
-    {
-    DP_SDA("CPresencePluginConnection::TerminateConnectionL");
-    iConnectionHost->HandleConnectionTerminated( NULL );
-    iConnectionArray->SetConnectionStatus( ETerminated );
-    DP_SDA("CPresencePluginConnection::TerminateConnectionL Done");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::DeRegister()
-// ---------------------------------------------------------------------------
-// 
-void CPresencePluginConnection::DeRegister( )
-    {
-    DP_SDA("CPresencePluginConnection::Deregister");
-    
-    DP_SDA(" -> CloseSession, delete permanent pres data");
-    TRAP_IGNORE( iPresenceData->DeletePresenceVariablesL( ServiceId() ) );
-    
-    // Try to stop publish only if we have successfully published
-    if ( iPublisher->Published() )
-        {
-        DP_SDA("CloseSession call stopPublish");
-        TRAP_IGNORE( iPublisher->StopPublishL( iStatus ) );
-        iStopPublishCall = ETrue;
-        SetActive();
-        }
-    
-    DP_SDA("CPresencePluginConnection::Deregister Done");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::CreateImFeaturesPlugin()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::CreateImFeaturesPluginL( )
-    {
-    if ( !iImFeatures )
-        {
-        DP_SDA("Creating SimpleImPlugin");
-        
-        CSimpleImFeatures::TSimpleImPluginInitParams imPluginInitParams( 
-            *this,
-            *iSession->SimpleConnection(),
-            iSession->ServiceId() );
-        
-        iImFeatures = static_cast<CSimpleImFeatures*> ( 
-            CProtocolImFeatures::NewL( TUid::Uid(KImplUidSimpleImPlugin),
-            &imPluginInitParams ) );
-        
-        DP_SDA("Creating SimpleImPlugin done");
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::DeleteImFeaturesPlugin()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::DeleteImFeaturesPlugin( )
-    {
-    if ( iImFeatures )
-        {
-        DP_SDA("Deleting SimpleImPlugin");
-        
-        delete iImFeatures;
-        iImFeatures = NULL;      
-        REComSession::FinalClose();
-        
-        DP_SDA("Deleting SimpleImPlugin done");
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::DoCancel()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::DoCancel(  )
-    {
-    DP_SDA("CPresencePluginConnection::DoCancel CANCEL");
-    iPublisher->Cancel();
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::RunL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginConnection::RunL(  )
-    {
-    DP_SDA("CPresencePluginConnection::RunL");
-    TInt status = iStatus.Int();
-    DP_SDA2("CPresencePluginConnection::RunL status %d", status );
-    
-    if ( iStopPublishCall )
-        {
-        DP_SDA("CPresencePluginConnection::RunL complete");     
-        
-        iStopPublishCall = EFalse;
-        CompleteReq( iXIMPId, status );      
-        
-        DP_SDA("CPresencePluginConnection::RunL --> REMOVE CACHE");
-        iPresenceData->RemoveCacheL();
-        
-        DP_SDA("CPresencePluginConnection::RunL --> Delete im plugin");
-        DeleteImFeaturesPlugin();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::RunError
-// ---------------------------------------------------------------------------
-//
-TInt CPresencePluginConnection::RunError( TInt /*aError*/ )
-    {
-    DP_SDA("CPresencePluginConnection::RunError"); 
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GroupsL()
-// ---------------------------------------------------------------------------
-// 
-CPresencePluginGroups& CPresencePluginConnection::GroupsL()
-	{
-	User::LeaveIfNull( iGroups );
-	return *iGroups;
-	}
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::ServiceId()
-// ---------------------------------------------------------------------------
-// 	
-TInt& CPresencePluginConnection::ServiceId()
-    {
-    return iSession->ServiceId();
-    }
-	
-// ---------------------------------------------------------------------------
-// CPresencePluginConnection::GetProtocolInterface()
-// ---------------------------------------------------------------------------
-// 
-TAny* CPresencePluginConnection::GetProtocolInterface( TInt aInterfaceId )
-	{
-	DP_SDA("CPresencePluginConnection::GetProtocolInterface");
-	
-	if( aInterfaceId == CProtocolImFeatures::KInterfaceId )
-        {
-        TInt err( KErrNone );
-        
-        if ( !iImFeatures )
-            {
-            DP_SDA("    --> Create im features plugin");           
-            TRAP( err, CreateImFeaturesPluginL() );
-            }
-        
-        if ( !err )
-            {
-            DP_SDA("    --> get interface");
-            
-            return iImFeatures->GetInterface( 
-                aInterfaceId, MXIMPBase::EPanicIfUnknown );
-            }
-        else
-            {
-            DP_SDA("    --> Creating im features plugin failed");
-            return NULL;
-            }
-        }
-	else
-        {
-	    return NULL;
-        }
-	}
-    
-// End of file