simpledatamodeladapter/src/presenceplugin.cpp
branchGCC_SURGE
changeset 28 d9861ae9169c
parent 23 77cb48a03620
parent 26 04ca1926b01c
--- a/simpledatamodeladapter/src/presenceplugin.cpp	Thu Jul 01 14:09:06 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,372 +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:  IETF SIMPLE Protocol implementation for XIMP Framework
-*
-*/
-
-
-#include <badesca.h>
-#include <ecom/implementationproxy.h>
-#include <ximpserviceinfo.h>
-#include <ximpbase.h>
-#include <ximpidentity.h>
-#include <presenceinfo.h>
-#include <ximpprotocolconnectionhost.h>
-#include <ximpprotocolconnection.h>
-#include <ximpserviceinfo.h>
-#include <ximpcontextclientinfo.h>
-
-#include "presenceplugin.h"
-#include "presenceplugindef.h"
-#include "presencepluginconnection.h"
-#include "presenceplugincommon.h"
-#include "presenceplugin_resource.hrh"
-#include "presenceconnectioninfo.h"
- 
-#include <spsettings.h>
-#include <spentry.h>
-#include <spproperty.h>
-#include <spdefinitions.h>
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Key value pair table to identify correct constructor
-// function for the requested interface.
-// ---------------------------------------------------------------------------
-//
-const TImplementationProxy ImplementationTable[] =
-    {
-    //Warning in Lint 611
-    IMPLEMENTATION_PROXY_ENTRY( PRESENCEPLUGIN_1_IMPLEMENTATION_UID,
-        CPresencePlugin::NewL )
-    };
-
-// ---------------------------------------------------------------------------
-// Exported function to return the implementation proxy table
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( 
-    TInt& aTableCount )
-    {
-    aTableCount = sizeof( ImplementationTable ) /
-        sizeof( TImplementationProxy );
-    return ImplementationTable;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePlugin::CPresencePlugin()
-// ---------------------------------------------------------------------------
-//
-CPresencePlugin::CPresencePlugin()
-    {
-    //empty
-    }
-   
-// ---------------------------------------------------------------------------
-// CPresencePlugin::NewLC()
-// ---------------------------------------------------------------------------
-//
-CPresencePlugin* CPresencePlugin::NewLC()
-    {
-    CPresencePlugin* self = new( ELeave ) CPresencePlugin();
-    CleanupStack::PushL( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePlugin::NewL()
-// ---------------------------------------------------------------------------
-//
-CPresencePlugin* CPresencePlugin::NewL()
-    {
-    CPresencePlugin* self = CPresencePlugin::NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePlugin::~CPresencePlugin()
-// ---------------------------------------------------------------------------
-//
-CPresencePlugin::~CPresencePlugin()
-    {
-    DP_SDA("CPresencePlugin::~CPresencePlugin");
-    iConnections.ResetAndDestroy();
-    iConnectionArray.ResetAndDestroy();
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePlugin::~CPresencePlugin()
-// ---------------------------------------------------------------------------
-//   
-void CPresencePlugin::PrimeHost( MXIMPProtocolPluginHost& aHost ) 
-    {
-    DP_SDA("CPresencePlugin::PrimeHost");
-    iHost = &aHost;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePlugin::AcquireConnectionL()
-// ---------------------------------------------------------------------------
-//
-MXIMPProtocolConnection& CPresencePlugin::AcquireConnectionL(
-    const MXIMPServiceInfo& aServiceInfo,
-    const MXIMPContextClientInfo& aContextClient )
-    {
-    DP_SDA("CPresencePlugin::AcquireConnectionL");
-    MXIMPProtocolConnection* tmp = NULL;
-    CPresenceConnectionInfo* connectionArray = NULL;
-    TBool connected = EFalse;
-    
-    //Check if presence is allready connected to id
-    //!!!! IN this adapter that IapID is service id ID!!!!
-    
-    DP_SDA2("CPresencePlugin::AcquireConnectionL - service id: %d", 
-        aServiceInfo.IapId() );
-    
-    TInt presenceId = KErrNotFound;
-    CSPSettings* spSettings = CSPSettings::NewL();
-    CleanupStack::PushL( spSettings );
-    
-    CSPProperty* property = CSPProperty::NewLC();
-    spSettings->FindPropertyL( aServiceInfo.IapId(),
-                                ESubPropertyPresenceSettingsId,
-                                *property );    
-    if ( property )
-        {
-        property->GetValue( presenceId );
-        }
-    CleanupStack::PopAndDestroy( property );        
-    CleanupStack::PopAndDestroy( spSettings );
-
-    DP_SDA2(" -> presence settings id: %d",presenceId );
-    __ASSERT_ALWAYS( presenceId > 0, User::Leave( KErrArgument ) );
-    
-    TInt connectionsCount = iConnections.Count();
-    DP_SDA2("AcquireConnectionL : connectionsCount =%d ", connectionsCount );
-    
-    for( TInt i( connectionsCount - 1 ); i >= 0; i-- )
-    	{
-		DP_SDA2("AcquireConnectionL connection count %d", connectionsCount);
-        if( iConnections[i]->GetPresenceSetId() == presenceId )
-            {
-            DP_SDA2("AcquireConnectionL RETURN OLD CONNECTION : i = %d " , i );
-            //Check connection status
-			tmp = iConnections[i];
-			connectionArray = iConnections[i]->GetConnectionArray();
-			
-			//Check connection status from connectionArray
-			CPresencePluginConnection::TConnectionStatus status =
-				connectionArray->GetConnectionStatus();
-			
-			if( CPresencePluginConnection::ENotActive == status )
-			    {
-			    DP_SDA("AcquireConnectionL ENotActive ");
-                DP_SDA("AcquireConnectionL Del old inactive connection");
-                //Call session CLOSE here!!!!!
-                //Ensure there is no any client to bind this connect
-                //Release this failed connection
-                DeleteConnection(i);
-			    }
-			else if ( CPresencePluginConnection::ETerminated == status )
-                {
-                DP_SDA("AcquireConnectionL ETerminated CREATE NEW CONNECTION ");
-                //Roamning try use lates ETag
-                //Delete old terminaded connection and create new with old ETag                             
-                CPresencePluginConnection* connection =
-                	CPresencePluginConnection::NewL(
-                        aServiceInfo, aContextClient,
-                        *iConnectionArray[i]->GetConnectionEtag() );
-                CleanupStack::PushL( connection );
-                
-                DeleteConnection( i );
-                
-                //Add this new connection to connectionArray
-                CPresenceConnectionInfo* connectionInfo =
-                	CPresenceConnectionInfo::NewL( connection );
-                iConnectionArray.Append( connectionInfo );
-                connection->SetConnectionArray( connectionInfo );
-                iConnections.AppendL( connection );
-                CleanupStack::Pop( connection ); 
-                tmp = connection;
-                connected = ETrue;
-                }
-			else if ( CPresencePluginConnection::EActive == status )
-			    {
-			    DP_SDA("AcquireConnectionL EActive");
-                // NOTE: Incase there is no reply from XIMP before client is
-                // shutdown , then closeconnection wouldnt be called, reopening 
-                // client will increase clientCount which is wrong. ClientCount 
-                // should be checked for validity before increasing? 
-                // If already connected
-                iConnectionArray[i]->IncreaseClientCount();
-                connected = ETrue;
-                tmp = iConnections[i];
-                DP_SDA("AcquireConnectionL RETURN OLD CONNECTION done");
-			    }
-			break;
-            }
-        }   
-    if( !connected )
-        {
-        DP_SDA("CPresencePlugin::AcquireConnectionL CREATE NEW CONNECTION");
-        // If not already connected 
-        CPresencePluginConnection* connection = CPresencePluginConnection::NewL(
-        	aServiceInfo, aContextClient );
-        CleanupStack::PushL( connection );
-        
-        //Add this new connection to connectionArray
-        CPresenceConnectionInfo* connectionInfo =
-        	CPresenceConnectionInfo::NewL( connection );
-        iConnectionArray.Append( connectionInfo );
-        connection->SetConnectionArray( connectionInfo );
-        //Add on binded client
-        connectionInfo->IncreaseClientCount();
-        
-        iConnections.AppendL( connection );
-        CleanupStack::Pop( connection ); 
-    	tmp = connection;
-    	DP_SDA("AcquireConnectionL CREATE NEW CONNECTION DONE"); 
-        }
-    DP_SDA("CPresencePlugin::AcquireConnectionL ret");    
-	return *tmp;				
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePlugin::ReleaseConnection()
-// ---------------------------------------------------------------------------
-//
-void CPresencePlugin::ReleaseConnection( MXIMPProtocolConnection& aConnection )
-    {
-    DP_SDA("CPresencePlugin::ReleaseConnection");   
-	TInt connectionsCount = iConnections.Count();
-    
-    DP_SDA2("ReleaseConnection : connectionsCount =%d ", connectionsCount );    
-        
-    for ( TInt i=0; i < connectionsCount; i++ )          
-        {
-        DP_SDA("CPresencePlugin::ReleaseConnection for start");
-        if ( iConnectionArray[i]->GetConnection() == &aConnection )
-            {
-            //Check how many client is using this connection
-            TInt clientCount = iConnectionArray[i]->ClientCount();
-            
-            DP_SDA2("ReleaseConnection :  clientCount = %d ", clientCount );    
-            DP_SDA2("CPresencePlugin::ReleaseConnection :  i = %d", i );    
-                
-            if ( connectionsCount == 1 && clientCount <= 0 )
-                {
-                DP_SDA("CPresencePlugin::ReleaseConnection Lets start to check");
-                DP_SDA2("CPresencePlugin::ReleaseConnection connect status %d,", iConnections[i]->GetSessionStatus());
-                //Check this connection status
-                if( !(CPresencePluginConnection::ENotActive ==
-                	iConnectionArray[i]->GetConnectionStatus() ))
-                   {
-                   DP_SDA("CPresencePlugin::ReleaseConnection not have clients");
-                   DeleteConnection(i);
-                   break;
-                   }
-                DP_SDA("connectionsCount == 1 && i == 0 && clientCount == 0 ");    
-                DP_SDA("ReleaseConnection : Don't delete this connection ");    
-                break; //don't delete first connection
-                } 
-            DP_SDA("CPresencePlugin::ReleaseConnection for end");  
-            }
-        }     
-    DP_SDA("CPresencePlugin::ReleaseConnection end");     
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePlugin::GetInterface()
-// ---------------------------------------------------------------------------
-//
-TAny* CPresencePlugin::GetInterface(
-    TInt32 aInterfaceId,
-    TIfGetOps aOptions )
-    {       
-    if ( aInterfaceId == GetInterfaceId() )
-        {
-        // caller wants this interface 
-        return this;
-        }
-    if ( aOptions == MXIMPBase::EPanicIfUnknown )
-        {
-        User::Panic( KPluginName, KErrExtensionNotSupported );
-        }  
-    return NULL;    
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePlugin::GetInterface()
-// ---------------------------------------------------------------------------
-//
-const TAny* CPresencePlugin::GetInterface(
-    TInt32 aInterfaceId,
-    TIfGetOps aOptions ) const
-    {
-    DP_SDA("CPresencePlugin::GetInterface");
-    if ( aInterfaceId == GetInterfaceId() )
-        {
-        // caller wants this interface
-        return const_cast<CPresencePlugin*>(this);
-        }
-    if ( aOptions == MXIMPBase::EPanicIfUnknown )
-        {
-        User::Panic( KPluginName, KErrExtensionNotSupported );
-        }       
-    return NULL; 
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePlugin::GetInterfaceId()
-// ---------------------------------------------------------------------------
-//
-TInt32 CPresencePlugin::GetInterfaceId() const
-    {
-    return MXIMPProtocolPlugin::KInterfaceId;
-    }    
-
-// ---------------------------------------------------------------------------
-// CPresencePlugin::DeleteConnection()
-// ---------------------------------------------------------------------------
-//
-void CPresencePlugin::DeleteConnection( TInt aIndex )
-    {
-    //First delete connectionArray where connection is same at connection
-    DP_SDA("CPresencePlugin::DeleteConnection"); 
-    
-    TInt connectionArrayCount = iConnectionArray.Count();
-    
-    for ( TInt i=0; i < connectionArrayCount; i++ )
-        {
-        DP_SDA2("CPresencePlugin::DeleteConnection FINDING, con status %d", iConnectionArray[i]->GetConnectionStatus() ); 
-        if( (iConnections[aIndex] == iConnectionArray[i]->GetConnection()) &&
-            !(CPresencePluginConnection::EActive ==
-            iConnectionArray[i]->GetConnectionStatus() )    )
-            {
-            DP_SDA("CPresencePlugin::DeleteConnection connection Match"); 
-            delete iConnectionArray[i];
-            iConnectionArray.Remove( i );
-            iConnectionArray.Compress();
-            break; 
-            }
-        }
-    delete iConnections[aIndex];
-    iConnections.Remove( aIndex );
-    iConnections.Compress();
-    DP_SDA("CPresencePlugin::DeleteConnection end"); 
-    }
-
-// End of file