imstutils/imconversationview/tsrc/imcvuiengine_test/dummytestadaptation/src/cossprotocolconnection.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 10:12:18 +0200
changeset 0 5e5d6b214f4f
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2007-2008 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:  oss protocol plugin connection
*
*/

#include "cossprotocolconnection.h"

#include <badesca.h>
#include <ximpcontextclientinfo.h>
#include <ximpprotocolconnectionhost.h>
#include <ximpprotocolconnection.h>
#include <protocolpresencefeatures.h>
#include <ximpbase.h>
#include <ximpidentity.h>
#include <presenceinfo.h>
#include <ximpprotocolconnectionhost.h>
#include <ximpserviceinfo.h>

#include "cossprotocolconnectionmanager.h"
#include "cossprotocolimfeatures.h"

#include "cossprotocolloginrequest.h"
#include "mossprotocolconnectionmanager.h"

#include "cossprotocollogoutrequest.h"
#include <ximperrors.hrh>


// ======== COSSProtocolConnection - MEMBER FUNCTIONS ========

// ---------------------------------------------------------------------------
// COSSProtocolConnection::COSSProtocolConnection()
// ---------------------------------------------------------------------------
//
COSSProtocolConnection::COSSProtocolConnection()
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::COSSProtocolConnection() Start-End" ) );
	}

// ---------------------------------------------------------------------------
// COSSProtocolConnection::ConstructL()
// ---------------------------------------------------------------------------
//
void COSSProtocolConnection::ConstructL (
    const MXIMPServiceInfo&  /*aServiceInfo*/ ,
    const MXIMPContextClientInfo& /*aClientCtxInfo*/ )
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::ConstructL() Start" ) );

//	PLUGIN_UNUSED_PARAM ( aClientCtxInfo );
	iConnMan = COSSProtocolConnectionManager::NewL();

//	iPresFeatures = COSSProtocolPresenceFeatures::NewL ( *iConnMan );
	iImFeatures = COSSProtocolImFeatures::NewL ( *iConnMan );
	//LOGGER ( TXT ( "COSSProtocolConnection::ConstructL() End" ) );
	}


// ---------------------------------------------------------------------------
// COSSProtocolConnection::NewL()
// ---------------------------------------------------------------------------
//
COSSProtocolConnection* COSSProtocolConnection::NewL (
    const MXIMPServiceInfo& aServiceInfo,
    const MXIMPContextClientInfo& aClientCtxInfo )
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::NewL() Start" ) );

	COSSProtocolConnection* self = new ( ELeave ) COSSProtocolConnection;
	CleanupStack::PushL ( self );
	self->ConstructL ( aServiceInfo, aClientCtxInfo );
	CleanupStack::Pop ( self );

	//LOGGER ( TXT ( "COSSProtocolConnection::NewL() End" ) );
	return self;
	}


// ---------------------------------------------------------------------------
// COSSProtocolConnection::~COSSProtocolConnection()
// ---------------------------------------------------------------------------
//
COSSProtocolConnection::~COSSProtocolConnection()
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::~COSSProtocolConnection() Start" ) );

	delete iConnMan;
	delete iImFeatures;
	//LOGGER ( TXT ( "COSSProtocolConnection::~COSSProtocolConnection() End" ) );
	}


// ---------------------------------------------------------------------------
// COSSProtocolConnection::GetInterface()
// ---------------------------------------------------------------------------
//
TAny* COSSProtocolConnection::GetInterface ( TInt32 aInterfaceId,
        TIfGetOps aOptions )
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::GetInterface() Start" ) );

	if ( aInterfaceId == MXIMPProtocolConnection::KInterfaceId )
		{
		MXIMPProtocolConnection* self = this;
		return self;
		}

	if ( aOptions == MXIMPBase::EPanicIfUnknown )

		{
		User::Panic ( KOSSProtocolConnection, KErrExtensionNotSupported );
		}

	//LOGGER ( TXT ( "COSSProtocolConnection::GetInterface() End" ) );

	return NULL;
	}


// ---------------------------------------------------------------------------
// COSSProtocolConnection::GetInterface() const
// ---------------------------------------------------------------------------
//
const TAny* COSSProtocolConnection::GetInterface ( TInt32 aInterfaceId,
        TIfGetOps aOptions ) const
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::GetInterface() const Start" ) );

	if ( aInterfaceId == MXIMPProtocolConnection::KInterfaceId )
		{
		const MXIMPProtocolConnection* self = this;
		return self;
		}

	if ( aOptions == MXIMPBase::EPanicIfUnknown )
		{
		User::Panic ( KOSSProtocolConnection, KErrExtensionNotSupported );
		}

	//LOGGER ( TXT ( "COSSProtocolConnection::GetInterface() const End" ) );

	return NULL;
	}


// ---------------------------------------------------------------------------
// COSSProtocolConnection::GetInterfaceId() const
// ---------------------------------------------------------------------------
//
TInt32 COSSProtocolConnection::GetInterfaceId() const
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::GetInterfaceId() Start-End" ) );
	return MXIMPProtocolConnection::KInterfaceId;
	}


// ---------------------------------------------------------------------------
// COSSProtocolConnection::PrimeHost()
// ---------------------------------------------------------------------------
//
void COSSProtocolConnection::PrimeHost ( MXIMPProtocolConnectionHost& aHost )
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::PrimeHost() Start" ) );

	iConnMan->SetHost ( aHost );

	//LOGGER ( TXT ( "COSSProtocolConnection::PrimeHost() Start" ) );
	}


// ---------------------------------------------------------------------------
// COSSProtocolConnection::OpenSessionL()
// ---------------------------------------------------------------------------
//
void COSSProtocolConnection::OpenSessionL (
    const MXIMPContextClientInfo& /*aClientCtxInfo*/,
    TXIMPRequestId aOpId )
	{
	
	iConnMan->HandleToHost().HandleRequestCompleted(aOpId,KErrNone);
	
	//LOGGER ( TXT ( "COSSProtocolConnection::OpenSessionL() End" ) );
	}

// ---------------------------------------------------------------------------
// COSSProtocolConnection::OpenSessionL()
// ---------------------------------------------------------------------------
//
void COSSProtocolConnection::OpenSessionL ( const TInt& /*aSettingsId*/,
        TXIMPRequestId aReqId )
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::OpenSessionLsettingsid \n" ) );

	iConnMan->HandleToHost().HandleRequestCompleted(aReqId,KErrNone);
	

	//LOGGER ( TXT ( "COSSProtocolConnection::OpenSessionLsettingsid() End" ) );
	}

// ---------------------------------------------------------------------------
// COSSProtocolConnection::OpenSessionL()
// ---------------------------------------------------------------------------
//

void COSSProtocolConnection::OpenSessionL (
    const MXIMPContextClientInfo& /*aContextClient*/,
    const TInt& /*aSettingsId*/,
    TXIMPRequestId /*aReqId*/ )
	{

	}

// ---------------------------------------------------------------------------
// COSSProtocolConnection::CloseSession()
// ---------------------------------------------------------------------------
//
void COSSProtocolConnection::CloseSession (
    const MXIMPContextClientInfo& /*aClientCtxInfo*/,
    TXIMPRequestId aOpId )
	{
	iConnMan->HandleToHost().HandleRequestCompleted(aOpId,KErrNone);
	//LOGGER ( TXT ( "COSSProtocolConnection::CloseSession() End" ) );
	}


// ---------------------------------------------------------------------------
// COSSProtocolConnection::ReOpenSessionsL()
// ---------------------------------------------------------------------------
//
void COSSProtocolConnection::ReOpenSessionsL ( TXIMPRequestId /*aOpId*/ )
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::ReOpenSessionsL() Start" ) );

	//LOGGER ( TXT ( "COSSProtocolConnection::ReOpenSessionsL() End" ) );
	}


// ---------------------------------------------------------------------------
// COSSProtocolConnection::GetSupportedFeaturesL()
// ---------------------------------------------------------------------------
//
void COSSProtocolConnection::GetSupportedFeaturesL ( CDesC8Array& aFeatures ) const
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::GetSupportedFeaturesL() Start End" ) );
	// first empty the whole array
	aFeatures.Reset();

	// then add our features there
	aFeatures.AppendL ( KConnectionFeature );
	//LOGGER ( TXT ( "COSSProtocolConnection::GetSupportedFeaturesL" ) );
	}

// ---------------------------------------------------------------------------
// COSSProtocolConnection::ProtocolPresenceFeatures()
// ---------------------------------------------------------------------------
//
MProtocolPresenceFeatures& COSSProtocolConnection::ProtocolPresenceFeatures()
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::ProtocolPresenceFeatures() Start " ) );
	//LOGGER ( TXT ( "COSSProtocolConnection::ProtocolPresenceFeatures() End " ) );
	return *iPresenceFeature;
	}
// ---------------------------------------------------------------------------
// COSSProtocolConnection::ProtocolImFeatures()
// ---------------------------------------------------------------------------
//
/*
MProtocolImFeatures* COSSProtocolConnection::ProtocolImFeatures()
	{
	LOGGER ( TXT ( "COSSProtocolConnection::ProtocolImFeatures() Start " ) );
	return iImFeatures;
	}*/

// ---------------------------------------------------------------------------
// COSSProtocolConnection::ReleaseConnectionL()
// ---------------------------------------------------------------------------
//

void COSSProtocolConnection::ReleaseConnectionL()
	{
	//LOGGER ( TXT ( "COSSProtocolConnection::ReleaseConnectionL() Start " ) );

	//LOGGER ( TXT ( "COSSProtocolConnection::ReleaseConnectionL() End" ) );
	}
TAny* COSSProtocolConnection::GetProtocolInterface(TInt aInterfaceId)
	{
	if(aInterfaceId == MProtocolImFeatures::KInterfaceId)
		{
		return iImFeatures->GetInterface(aInterfaceId, MXIMPBase::EPanicIfUnknown ); 
		}
	return NULL;
	}