imservices/ossprotocoladaptation/tsrc/ossadapmt/src/ossadapmtBlocks.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:54:49 +0200
changeset 0 e6b17d312c8b
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 2002 - 2007 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:  ossadapmtBlocks.cpp
*
*/



// [INCLUDE FILES] - do not remove
#include <e32svr.h>
#include <StifParser.h>
#include <StifTestInterface.h>
#include "ossadapmt.h"
#include <ximpidentity.h>
#include <ximpclient.h>
#include <ximpcontext.h>
#include <ximpobjectfactory.h>
#include <ximpcontextobserver.h>
#include <ximpcontextstateevent.h>
#include <ximpprotocolinfo.h>
#include <ximpfeatureinfo.h>
#include <ximpserviceinfo.h>
#include "uscontextobserver.h"
#include <presencefeatures.h>
#include <imfeatures.h>
#include <presentitygroups.h>
#include <imconversation.h>
#include <imobjectfactory.h>
#include <imconversationinfo.h>
#include "cuserafter.h"
#include <presencepublishing.h>
#include <presencewatching.h>
#include <presenceinfofilter.h>
#include <presenceinfo.h>
#include <presenceobjectfactory.h>
#include <servicepresenceinfo.h>
#include <personpresenceinfo.h>
#include <presenceinfofield.h>
#include <presenceinfofieldcollection.h>
#include <presenceinfofieldvalueenum.h>
#include <presenceinfofieldvaluetext.h>
#include <presenceinfofieldvaluebinary.h>
#include <presenceauthorization.h>
#include <utf.h>
#include <search.h>
#include <searchfeature.h>
#include <searchobjectfactory.h>
#include <searchelement.h>
//#include "immessageinfoimp.h"
const TInt KProtocolUid = 0x101FB3E7; // 0x10282EE9;
_LIT8( KInstantMessaging, "instant-messaging");

// StatusText attribute value tags
_LIT8( KStatusTextfield, "StatusText");

// Online Status attribute value tags
_LIT8( KOnlineStatusfield, "OnlineStatus" );
_LIT ( KMsgId, "MessageID1" );
_LIT( KContact1, "meco5555@gmail.com");

// EXTERNAL DATA STRUCTURES
//extern  ?external_data;

// EXTERNAL FUNCTION PROTOTYPES
//extern ?external_function( ?arg_type,?arg_type );

// CONSTANTS
//const ?type ?constant_var = ?constant;

// MACROS
//#define ?macro ?macro_def

// LOCAL CONSTANTS AND MACROS
//const ?type ?constant_var = ?constant;
//#define ?macro_name ?macro_def

// MODULE DATA STRUCTURES
//enum ?declaration
//typedef ?declaration

// LOCAL FUNCTION PROTOTYPES
//?type ?function_name( ?arg_type, ?arg_type );

// FORWARD DECLARATIONS
//class ?FORWARD_CLASSNAME;

// ============================= LOCAL FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// ?function_name ?description.
// ?description
// Returns: ?value_1: ?description
//          ?value_n: ?description_line1
//                    ?description_line2
// -----------------------------------------------------------------------------
//
/*
?type ?function_name(
    ?arg_type arg,  // ?description
    ?arg_type arg)  // ?description
    {

    ?code  // ?comment

    // ?comment
    ?code
    }
*/

// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// Cossadapmt::Delete
// Delete here all resources allocated and opened from test methods.
// Called from destructor.
// -----------------------------------------------------------------------------
//
void Cossadapmt::Delete()
	{

	}

// -----------------------------------------------------------------------------
// Cossadapmt::RunMethodL
// Run specified method. Contains also table of test mothods and their names.
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::RunMethodL (
    CStifItemParser& aItem )
	{

	static TStifFunctionInfo const KFunctions[] =
		{
		// Copy this line for every implemented function.
		// First string is the function name used in TestScripter script file.
		// Second is the actual implementation member function.
		ENTRY ( "SecondSearchL",Cossadapmt::SecondSearchL ), 
		ENTRY ( "Login", Cossadapmt::LoginL ),
		ENTRY ( "Login_InvalidData", Cossadapmt::Login_InvalidDataL ),
		ENTRY ( "AcceptnotificationRequest", Cossadapmt::AcceptnotificationRequestL ),
		ENTRY ( "Login_Logout_sequential", Cossadapmt::LoginLogout_LoginLogoutL ),
		ENTRY ( "Login_8Hrs_Logout", Cossadapmt::Login8HrsLogoutL ),
		ENTRY ( "Unbind", Cossadapmt::UnBindL ),
		ENTRY ( "GetContacts", Cossadapmt::GetContactsL ),
		ENTRY ( "Add_conatct", Cossadapmt::AddConatctL ),
		ENTRY ( "Add_Blank_Conatct", Cossadapmt::AddBlankConatctL ),
		ENTRY ( "Add_Blank_Conatct1", Cossadapmt::AddBlankConatct1L ),
		ENTRY ( "Delete_conatct", Cossadapmt::DeleteConatctL ),
		ENTRY ( "Delete_Blank_Conatct", Cossadapmt::DeleteBlankConatctL ),
		ENTRY ( "Sendmessage", Cossadapmt::SendMessageL ),
		ENTRY ( "Sendemptymessage", Cossadapmt::SendEmptyMessageL ),
		ENTRY ( "Send_ten_messages", Cossadapmt::SendTenMessageL ),
		ENTRY ( "Send_twenty_messages", Cossadapmt::SendTwentyMessageL ),
		ENTRY ( "Sendmessage_multiplecontacts", Cossadapmt::SendMessage_MultipleContactsL ),
		ENTRY ( "Receivemessage", Cossadapmt::ReceiveMessageL ),
		ENTRY ( "Receiveemptymessage", Cossadapmt::ReceiveEmptyMessageL ),
		ENTRY ( "Receive_ten_messages", Cossadapmt::ReceiveTenMessageL ),
		ENTRY ( "Receive_twenty_message", Cossadapmt::ReceiveTwentyMessageL ),
		ENTRY ( "Publish_ownpresence", Cossadapmt::PublishOwnPresenceL ),
		ENTRY ( "Publish_ownpresence_emptytext", Cossadapmt::PublishOwnPresenceEmptyTextL ),
		ENTRY ( "RejectAddnotificationRequest", Cossadapmt::RejectAddnotificationRequestL ),
		ENTRY ( "ImOperations_Coverage", Cossadapmt::ImOperationsCoverageL ),
		
		ENTRY ( "SimpleSearchL", Cossadapmt::SimpleSearchL ),
		ENTRY ( "MultipleSearchL", Cossadapmt::MultipleSearchL ),
		ENTRY ( "NoResultSearchL", Cossadapmt::NoResultSearchL ),
		ENTRY ( "ManyResultsSearchL", Cossadapmt::ManyResultsSearchL ),
		ENTRY ( "BlankSearchL", Cossadapmt::BlankSearchL ),
		ENTRY ( "MaxCharSearchL", Cossadapmt::MaxCharSearchL ),
		ENTRY ( "SpecialCharSearchL", Cossadapmt::SpecialCharSearchL ),
		ENTRY ( "SearchEmailIDL",Cossadapmt::SearchEmailIDL ),
		ENTRY ( "SearchAndAddToIML",Cossadapmt::SearchAndAddToIML ), 
		ENTRY ( "GetSearchKeyEnumL",Cossadapmt::GetSearchKeyEnumL ), 
		ENTRY ( "GetSearchKeyLabelL",Cossadapmt::GetSearchKeyLabelL ), 
		ENTRY ( "GetSearchKeyEnumNLabelL",Cossadapmt::GetSearchKeyEnumNLabelL ), 
        ENTRY ( "SetAvtar",Cossadapmt::SetAvtarL ), 
		//ADD NEW ENTRY HERE
		// [test cases entries] - Do not remove

		};

	const TInt count = sizeof ( KFunctions ) /
	                   sizeof ( TStifFunctionInfo );

	return RunInternalL ( KFunctions, count, aItem );

	}



// -----------------------------------------------------------------------------
// Cossadapmt::SearchL
// Search test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::SearchL ( CStifItemParser& aItem, TSearch aSearchType )
	{



	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::LoginL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );

   	
    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;


	MSearchFeature* srFeature = NULL;
	srFeature = MSearchFeature::NewL ( presecenCtx );
//	CleanupStack::PushL( srFeature );
	
	MSearch& srch=srFeature->Search();
	MSearchObjectFactory& searchObjFact=srFeature->SearchObjectFactory();


	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );
	
//------------------------------------------Fetch Start------------------------------------------
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );
	MXIMPIdentity* newGroupId = presecenCtx->ObjectFactory().NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;
	MXIMPIdentity* newmemberId = presecenCtx->ObjectFactory().NewIdentityLC();

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "list" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;


	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );

	CUserAfter::AfterL ( 1000000 );

//------------------------------------------Fetch End------------------------------------------


	MXIMPIdentity* searchId = presecenCtx->ObjectFactory().NewIdentityLC();
    searchId->SetIdentityL(_L("SEARCH"));
    
    MXIMPIdentity* firstId = presecenCtx->ObjectFactory().NewIdentityLC();
    
    
    MSearchElement* srchElement1=searchObjFact.NewSearchElementLC();
    
    
    MXIMPIdentity* secondId = presecenCtx->ObjectFactory().NewIdentityLC();
    
    
    MSearchElement* srchElement2=searchObjFact.NewSearchElementLC();
    
    
    RPointerArray< MSearchElement > searchList;
    CleanupClosePushL( searchList );
    
	switch ( aSearchType ) 
		{
		
		case EGetSearchKeyEnum:
			{
			
			req = srch.GetSearchKeysL();
			eventObserver->WaitOpToCompleteL ( req );
			
			firstId->SetIdentityL(_L("james"));
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			searchList.Append(srchElement1);
			
			req=srch.SearchL(*searchId,searchList,10 );				
			break;
			
			}
		
		
		case EGetSearchKeyLabel:
			{
			
			req = srch.GetSearchKeysL();
			eventObserver->WaitOpToCompleteL ( req );
			
			MXIMPIdentity* label = presecenCtx->ObjectFactory().NewIdentityLC();
			label->SetIdentityL( _L( "Family Name" ) );
			
			secondId->SetIdentityL(_L("BOND"));
			
		    srchElement2->SetRequestL( *secondId, *label );
		    
			searchList.Append( srchElement1 );
			searchList.Append( srchElement2 ); 
		    
		    req=srch.SearchL(*searchId,searchList,10 );
		    
		    CleanupStack::PopAndDestroy ();
		    
			break;		
			
			}
		
		
		case EGetSearchKeyEnumNLabel:
			{
			
			req = srch.GetSearchKeysL();
			eventObserver->WaitOpToCompleteL ( req );
			
			
			firstId->SetIdentityL(_L("james"));
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			secondId->SetIdentityL(_L("BOND"));
			
			MXIMPIdentity* label = presecenCtx->ObjectFactory().NewIdentityLC();
			label->SetIdentityL( _L( "Family Name" ) );
			
		    srchElement2->SetRequestL( *secondId, *label );
		    
			searchList.Append( srchElement1 );
			searchList.Append( srchElement2 ); 
		    
		    req=srch.SearchL(*searchId,searchList,10 );
		    
		    CleanupStack::PopAndDestroy ();
		    
			break;		
			}
		
		
		case ESimpleSearch :
			{
			
			req = srch.GetSearchKeysL();
			eventObserver->WaitOpToCompleteL ( req );
			
			firstId->SetIdentityL(_L("james"));
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			searchList.Append(srchElement1);
			
			req=srch.SearchL(*searchId,searchList,10 );
			
			break;	
			}
		
		
		case EMultipleSearch :
			{
			
			req = srch.GetSearchKeysL();
			eventObserver->WaitOpToCompleteL ( req );
			
			
			firstId->SetIdentityL(_L("james"));
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			secondId->SetIdentityL(_L("BOND"));
			
			MXIMPIdentity* label = presecenCtx->ObjectFactory().NewIdentityLC();
			label->SetIdentityL( _L( "Family Name" ) );
			
		    srchElement2->SetRequestL( *secondId, *label );
		    
			searchList.Append( srchElement1 );
			searchList.Append( srchElement2 ); 
		    
		    req=srch.SearchL(*searchId,searchList,10 );
		    
		    CleanupStack::PopAndDestroy ();
		    		
			break;	
			}
		
		
		case ESearchNoResults :
			{
			firstId->SetIdentityL(_L("Santhosh"));
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			secondId->SetIdentityL(_L("I C"));
		    srchElement2->SetRequestL( *secondId, EUserLastName );
		    
			searchList.Append( srchElement1 );
			searchList.Append( srchElement2 ); 
		    
		    req=srch.SearchL(*searchId,searchList,10 );
			break;	
			}
	
		
		case ESearchManyResults :
			{
			firstId->SetIdentityL(_L("a"));
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			searchList.Append(srchElement1);
			
			req=srch.SearchL(*searchId,searchList,10 );
			
			break;	
			}
		
		
		case ESearchBlank :
			{
			firstId->SetIdentityL(_L(""));
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			searchList.Append(srchElement1);
			
			req=srch.SearchL(*searchId,searchList,10 );	
			break;
			}
		
		
		
		case ESearchMaxChars :
			{
			firstId->SetIdentityL( _L( "fbg agh ggd sad ghda gh dhg hgasdg dh jggd gsdg g \
			kjdg g gsd gfhsdg fhasgd hasdh ghfgahfg hgsdg dg gdgsgkj" ) );
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			searchList.Append( srchElement1 );
			
			req=srch.SearchL( *searchId,searchList,10 );
			break;	
			}
		
		
		case ESearchSpecialChars :
			{
			firstId->SetIdentityL( _L( "*%#@$%^#%^&^^%)(" ) );
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			searchList.Append( srchElement1 );
			
			req=srch.SearchL( *searchId,searchList,10 );
			
			break;	
			}
		case  ESearchEmailid:
			{
			firstId->SetIdentityL( _L( "wordjames@chat.gizmoproject.com" ) );
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			searchList.Append( srchElement1 );
			
			req=srch.SearchL( *searchId,searchList,10 );
			break;	
			} 
			
		case  ESearchAndAddToIm:
			{
			firstId->SetIdentityL( _L( "sharath" ) );
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			searchList.Append( srchElement1 );
			
			req=srch.SearchL( *searchId,searchList,10 );
			//Wait for search to complete
			eventObserver->WaitOpToCompleteL( req );
			CUserAfter::AfterL ( 5000000 );
			
			//And then call the AddToContactList
			RFs fs;
			RFile file;
			TBuf8<100> buf;
			User::LeaveIfError( fs.Connect() );
			User::LeaveIfError( file.Open( fs, KAddContactFileName, EFileRead ) );
			file.Read( buf );
			file.Close();
			fs.Close();
			TBuf16<100> h_buf;
			CnvUtfConverter::ConvertToUnicodeFromUtf8( h_buf, 
											buf );
//-------------------Adding Contact Start-----------------------------------------			
			
			newmemberId->SetIdentityL ( h_buf );
			
			req = groups.AddPresentityGroupMemberL(
			                    *newGroupId,
			                    *newmemberId,
			                    KNullDesC()) ;	

			//eventObserver->WaitOpToCompleteL ( req );
			//CUserAfter::AfterL ( 5000000 );
			//Wait at the below eventObserver->WaitOpToCompleteL( req );
			
			
//-------------------Adding Contact End-----------------------------------------						
			break;	
			}
		case ESecondSearch:
			{
			
			firstId->SetIdentityL(_L("sharath"));
			srchElement1->SetRequestL( *firstId, EUserFirstName );
			
			searchList.Append(srchElement1);
			
			req=srch.SearchL(*searchId,searchList,10 );
			
			eventObserver->WaitOpToCompleteL( req );
					
			CUserAfter::AfterL(100000);
			searchList.Reset();
			
			//Second Search
			secondId->SetIdentityL(_L("Jeppu"));
			srchElement1->SetRequestL( *secondId, EUserLastName );
			
			searchList.Append(srchElement1);
			
			req=srch.SearchL(*searchId,searchList,10 );
			
			break;
			}
					
		}
    
    CleanupStack::PopAndDestroy (); //newmemberId
	CleanupStack::PopAndDestroy ();//newGroupId
	CleanupStack::PopAndDestroy ();//presenceFeatures
    
	CleanupStack::PopAndDestroy (); //
	CleanupStack::PopAndDestroy ();
	CleanupStack::PopAndDestroy ();
	
	CleanupStack::PopAndDestroy ();
	CleanupStack::PopAndDestroy ();
	
	CleanupStack::PopAndDestroy ();

	eventObserver->WaitOpToCompleteL( req );
	//Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

//	CleanupStack::PopAndDestroy ();//Search feature plugin 
	CleanupStack::PopAndDestroy ( 3 ); //presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SearchL() End" ) );
	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::GetSearchKeyEnum
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::GetSearchKeyEnumL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, EGetSearchKeyEnum );	
	}

// -----------------------------------------------------------------------------
// Cossadapmt::GetSearchKeyLabel
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::GetSearchKeyLabelL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, EGetSearchKeyLabel );	
	}

// -----------------------------------------------------------------------------
// Cossadapmt::GetSearchKeyEnumNLabel
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//	
TInt Cossadapmt::GetSearchKeyEnumNLabelL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, EGetSearchKeyEnumNLabel );	
	}

// -----------------------------------------------------------------------------
// Cossadapmt::SearchAndAddToIML
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//

TInt Cossadapmt::SecondSearchL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, ESecondSearch );
	}


// -----------------------------------------------------------------------------
// Cossadapmt::SearchAndAddToIML
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//

TInt Cossadapmt::SearchAndAddToIML( CStifItemParser& aItem )
	{
	return SearchL ( aItem, ESearchAndAddToIm );
	}

// -----------------------------------------------------------------------------
// Cossadapmt::SimpleSearchL
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//

TInt Cossadapmt::SimpleSearchL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, ESimpleSearch );
	}
// -----------------------------------------------------------------------------
// Cossadapmt::MultipleSearchL
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//	
TInt Cossadapmt::MultipleSearchL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, EMultipleSearch );	
	}
// -----------------------------------------------------------------------------
// Cossadapmt::NoResultSearchL
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::NoResultSearchL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, ESearchNoResults );	
	}
// -----------------------------------------------------------------------------
// Cossadapmt::ManyResultsSearchL
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::ManyResultsSearchL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, ESearchManyResults );	
	}
// -----------------------------------------------------------------------------
// Cossadapmt::BlankSearchL.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::BlankSearchL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, ESearchBlank );	
	}
// -----------------------------------------------------------------------------
// Cossadapmt::MaxCharSearchL
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::MaxCharSearchL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, ESearchMaxChars );	
	}
// -----------------------------------------------------------------------------
// Cossadapmt::SpecialCharSearchL
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//	
TInt Cossadapmt::SpecialCharSearchL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, ESearchSpecialChars );	
	}
// -----------------------------------------------------------------------------
// Cossadapmt::SearchEmailIDL
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//	
TInt Cossadapmt::SearchEmailIDL( CStifItemParser& aItem )
	{
	return SearchL ( aItem, ESearchEmailid );	
	}
// -----------------------------------------------------------------------------
// Cossadapmt::LoginL
// Login test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::LoginL ( CStifItemParser& aItem )
	{



	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::LoginL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );


	//Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 3 ); //presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::LoginL() End" ) );
	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::Login_InvalidDataL
// Login test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::Login_InvalidDataL ( CStifItemParser& aItem )
	{



	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::Login_InvalidDataL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );

	CleanupStack::PopAndDestroy ( 3 ); //presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::Login_InvalidDataL() End" ) );
	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::Login8HrsLogoutL
// Login test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::Login8HrsLogoutL ( CStifItemParser& aItem )
	{



	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::Login8HrsLogoutL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );


    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );
	CUserAfter::After8HrsL ();

	//Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 3 ); //presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::Login8HrsLogoutL() End" ) );
	return KErrNone;

	}
	
// -----------------------------------------------------------------------------
// Cossadapmt::LoginLogout_LoginLogoutL
// Login test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::LoginLogout_LoginLogoutL ( CStifItemParser& aItem )
	{



	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::LoginLogout_Log() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );
    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called - Sequence 1" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );

	//Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end- Sequence 1 complete" ) );
	

/// Login --- Logout  - Sequence 2
	//Bind context to desired presence service
	req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called  - Sequence 2" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );

	//Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end - Sequence 2 complete" ) );


	CleanupStack::PopAndDestroy ( 3 ); //presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::LoginLogout_Log() End" ) );
	return KErrNone;

	}
	

// -----------------------------------------------------------------------------
// Cossadapmt::GetContactsL
// Fetch contacts test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::GetContactsL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::GetContactsL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );
	TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "list" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );

	
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );

	CUserAfter::AfterL ( 1000000 );
	//Unbind the context and wait completion
	req = presecenCtx->UnbindL();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::GetContactsL() end" ) );

	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::AddConatctL
// AddConatctL contacts test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::AddConatctL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddContactsL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );
	TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;
	MXIMPIdentity* newmemberId = objFactory.NewIdentityLC();

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "list" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               contact;
    
	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( contact );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );

	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );

	CUserAfter::AfterL ( 1000000 );
	
	 newmemberId->SetIdentityL ( contact );
	
	req = groups.AddPresentityGroupMemberL(
	                    *newGroupId,
	                    *newmemberId,
	                    KNullDesC()) ;	

	eventObserver->WaitOpToCompleteL ( req );
	CUserAfter::AfterL ( 5000000 );
	 CleanupStack::PopAndDestroy();//newmemberId
	//Unbind the context and wait completion
	req = presecenCtx->UnbindL();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddContactsL() end" ) );

	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::AddBlankConatctL
// AddConatctL contacts test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::AddBlankConatctL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddBlankConatctL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );
	TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;
	MXIMPIdentity* newmemberId = objFactory.NewIdentityLC();

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "list" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    
	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );

	
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );

	CUserAfter::AfterL ( 1000000 );
	_LIT ( KBlankContact, "" );
	 newmemberId->SetIdentityL ( KBlankContact );
	 
	
	req = groups.AddPresentityGroupMemberL(
	                    *newGroupId,
	                    *newmemberId,
	                    KNullDesC()) ;	

	eventObserver->WaitOpToCompleteL ( req );
	//Unbind the context and wait completion
	req = presecenCtx->UnbindL();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );
	CleanupStack::PopAndDestroy();
	CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddBlankConatctL() end" ) );

	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::AddBlankConatct1L
// AddConatctL contacts test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::AddBlankConatct1L ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddBlankConatctL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );
	TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;
	MXIMPIdentity* newmemberId = objFactory.NewIdentityLC();

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "list" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    
	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );

	
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );

	CUserAfter::AfterL ( 1000000 );
	_LIT ( KBlankContact, "" );
	 newmemberId->SetIdentityL ( KBlankContact );
	
	req = groups.AddPresentityGroupMemberL(
	                    *newGroupId,
	                    *newmemberId,
	                    KNullDesC()) ;	

	eventObserver->WaitOpToCompleteL ( req );
	CleanupStack::PopAndDestroy();  //newmemberId
	//Unbind the context and wait completion
	req = presecenCtx->UnbindL();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AddBlankConatctL() end" ) );

	return KErrNone;

	}	
// -----------------------------------------------------------------------------
// Cossadapmt::DeleteConatctL
// DeleteConatctL contacts test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::DeleteConatctL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::DeleteConatctL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );
	TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;
	MXIMPIdentity* newmemberId = objFactory.NewIdentityLC();

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "list" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               contact;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( contact );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );

	
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );

	CUserAfter::AfterL ( 1000000 );
	
	newmemberId->SetIdentityL ( contact );
	
	req = groups.RemovePresentityGroupMemberL(
	                    *newGroupId,
	                    *newmemberId) ;	

	eventObserver->WaitOpToCompleteL ( req );
	CleanupStack::PopAndDestroy();//newmemberId
	//Unbind the context and wait completion
	req = presecenCtx->UnbindL();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::DeleteConatctL() end" ) );

	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::DeleteBlankConatctL
// DeleteConatctL contacts test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::DeleteBlankConatctL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::DeleteBlankConatctL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );
	TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;
	MXIMPIdentity* newmemberId = objFactory.NewIdentityLC();

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "list" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );

	
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );

	CUserAfter::AfterL ( 1000000 );
	_LIT ( KBlankContact, "" );
	newmemberId->SetIdentityL (KBlankContact);
	
	req = groups.RemovePresentityGroupMemberL(
	                    *newGroupId,
	                    *newmemberId) ;	

	eventObserver->WaitOpToCompleteL ( req );
	CleanupStack::PopAndDestroy();  //newmemberId	
	//Unbind the context and wait completion
	req = presecenCtx->UnbindL();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 5 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::DeleteBlankConatctL() end" ) );

	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::UnBindL
// UnBind test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::UnBindL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::UnBindL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
                     
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );


	//Unbind the context and wait completion
	req = presecenCtx->UnbindL();
	eventObserver->WaitOpToCompleteL( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );


	CleanupStack::Pop ( 3 ); //presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::UnBindL() End" ) );
	return KErrNone;


	}

// -----------------------------------------------------------------------------
// Cossadapmt::SendMessageL
// SendMessage test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::SendMessageL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendMessageL() start" ) );
	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );
	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();
	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	//Bind context to desired presence service
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               message;
    TPtrC               recipient;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( message );
	aItem.GetNextString ( recipient );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) );
	eventObserver->WaitOpToCompleteL ( req );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
   CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures

	CUserAfter::AfterL ( 1000000 );
	//Bind context to desired presence service
	MImFeatures* imFeatures = NULL;
	imFeatures = MImFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( imFeatures );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) );
	MImConversation& imconversation = imFeatures->ImConversation();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) );
	MImConversationInfo *aImMessage = NULL;
	aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC();
	MXIMPIdentity* identity = objFactory.NewIdentityLC();
	identity->SetIdentityL ( KMsgId );
	aImMessage->SetMessageIdL ( identity );
	aImMessage->SetTextMessageL ( message );
	CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 );
	CleanupStack::PushL ( aRecipients );  
	aRecipients->AppendL ( recipient );//userid's
	aImMessage->SetRecipientL ( aRecipients );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) );

	req = imconversation.SendMessageL ( *aImMessage );
	eventObserver->WaitOpToCompleteL ( req );
	CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage
	//Unbind the context and wait completion
	CUserAfter::AfterL ( 2000000 );
  	req = presecenCtx->UnbindL();
  	eventObserver->WaitOpToCompleteL( req );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) );
	CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient,
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendMessageL() end" ) );

	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::SendEmptyMessageL
// SendMessage test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::SendEmptyMessageL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendEmptyMessageL() start" ) );
	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );
	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();
	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	//Bind context to desired presence service
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               recipient;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( recipient );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) );
	eventObserver->WaitOpToCompleteL ( req );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "" );
	_LIT ( KEmptyMessage, "" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
   CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures

	CUserAfter::AfterL ( 1000000 );
	//Bind context to desired presence service
	MImFeatures* imFeatures = NULL;
	imFeatures = MImFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( imFeatures );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) );
	MImConversation& imconversation = imFeatures->ImConversation();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) );
	MImConversationInfo *aImMessage = NULL;
	aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC();
	MXIMPIdentity* identity = objFactory.NewIdentityLC();
	identity->SetIdentityL ( KMsgId );
	aImMessage->SetMessageIdL ( identity );
	aImMessage->SetTextMessageL ( KEmptyMessage );
	CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 );
	CleanupStack::PushL ( aRecipients );  
	aRecipients->AppendL ( recipient );//userid's
	aImMessage->SetRecipientL ( aRecipients );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) );

	req = imconversation.SendMessageL ( *aImMessage );
	eventObserver->WaitOpToCompleteL ( req );
	CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage
	//Unbind the context and wait completion
  	req = presecenCtx->UnbindL();
  	eventObserver->WaitOpToCompleteL( req );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) );
	CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient,
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendEmptyMessageL() end" ) );

	return KErrNone;

	}	

// -----------------------------------------------------------------------------
// Cossadapmt::SendTenMessageL
// SendMessage test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::SendTenMessageL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendTenMessageL() start" ) );
	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );
	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();
	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	//Bind context to desired presence service
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               message;
    TPtrC               recipient;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( message );
	aItem.GetNextString ( recipient );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) );
	eventObserver->WaitOpToCompleteL ( req );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
    CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures

	CUserAfter::AfterL ( 1000000 );
	//Bind context to desired presence service
	MImFeatures* imFeatures = NULL;
	imFeatures = MImFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( imFeatures );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) );
	MImConversation& imconversation = imFeatures->ImConversation();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) );
	MImConversationInfo *aImMessage = NULL;
	aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC();
	MXIMPIdentity* identity = objFactory.NewIdentityLC();
	identity->SetIdentityL ( KMsgId );
	aImMessage->SetMessageIdL ( identity );
	aImMessage->SetTextMessageL ( message );
	CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 );
	CleanupStack::PushL ( aRecipients );  
	aRecipients->AppendL ( recipient ); //userid's
	aImMessage->SetRecipientL ( aRecipients );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) );

	for ( TInt i = 0;i < 10;i++ )
		{
		req = imconversation.SendMessageL ( *aImMessage );
		eventObserver->WaitOpToCompleteL ( req );

		}
	CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) );
    //Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient,
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendTenMessageL() end" ) );

	return KErrNone;

	}

// -----------------------------------------------------------------------------
// Cossadapmt::SendTwentyMessageL
// SendMessage test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::SendTwentyMessageL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendTwentyMessageL() start" ) );
	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );
	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();
	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	//Bind context to desired presence service
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               message;
    TPtrC               recipient;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( message );
	aItem.GetNextString ( recipient );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) );
	eventObserver->WaitOpToCompleteL ( req );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
   CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures

	CUserAfter::AfterL ( 1000000 );
	//Bind context to desired presence service
	MImFeatures* imFeatures = NULL;
	imFeatures = MImFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( imFeatures );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) );
	MImConversation& imconversation = imFeatures->ImConversation();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) );
	MImConversationInfo *aImMessage = NULL;
	aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC();
	MXIMPIdentity* identity = objFactory.NewIdentityLC();
	identity->SetIdentityL ( KMsgId );
	aImMessage->SetMessageIdL ( identity );
	aImMessage->SetTextMessageL ( message );
	CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 );
	CleanupStack::PushL ( aRecipients );  //userid's
	aRecipients->AppendL ( recipient );
	aImMessage->SetRecipientL ( aRecipients );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) );

	for ( TInt i = 0;i < 20;i++ )
		{
		req = imconversation.SendMessageL ( *aImMessage );
		eventObserver->WaitOpToCompleteL ( req );

		}
	CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) );
    //Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient,
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendTwentyMessageL() end" ) );

	return KErrNone;

	}

// -----------------------------------------------------------------------------
// Cossadapmt::SendMessage_MultipleContactsL
// SendMessage test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::SendMessage_MultipleContactsL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendMessage_MultipleContactsL() start" ) );
	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );
	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();
	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	//Bind context to desired presence service
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );

    //read data from cfg file
	TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               message;
    TPtrC               recipient;
    TPtrC               recipient1;
    TPtrC               recipient2;
    TPtrC               recipient3;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( message );
	aItem.GetNextString ( recipient );
	aItem.GetNextString ( recipient1 );
	aItem.GetNextString ( recipient2 );
	aItem.GetNextString ( recipient3 );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) );
	eventObserver->WaitOpToCompleteL ( req );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
    CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures

	CUserAfter::AfterL ( 1000000 );
	//Bind context to desired presence service
	MImFeatures* imFeatures = NULL;
	imFeatures = MImFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( imFeatures );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) );
	MImConversation& imconversation = imFeatures->ImConversation();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) );
	MImConversationInfo *aImMessage = NULL;
	aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC();
	MXIMPIdentity* identity = objFactory.NewIdentityLC();
	identity->SetIdentityL ( KMsgId );
	aImMessage->SetMessageIdL ( identity );
	aImMessage->SetTextMessageL ( message );
	CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 );
	CleanupStack::PushL ( aRecipients ); 
	aRecipients->AppendL ( recipient );  //userid's
	aRecipients->AppendL ( recipient1 );
	aRecipients->AppendL ( recipient2 );
	aRecipients->AppendL ( recipient3 );

	aImMessage->SetRecipientL ( aRecipients );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) );

	req = imconversation.SendMessageL ( *aImMessage );
	eventObserver->WaitOpToCompleteL ( req );
	CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) );
	CUserAfter::AfterL ( 1000000 );

	//Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient,
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SendMessage_MultipleContactsL() end" ) );

	return KErrNone;

	}

// -----------------------------------------------------------------------------
// Cossadapmt::ReceiveMessageL
// SendMessage test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::ReceiveMessageL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveMessageL() start" ) );
	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );
	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();
	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	//Bind context to desired presence service
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               message;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( message );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) );
	eventObserver->WaitOpToCompleteL ( req );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
   CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures

	CUserAfter::AfterL ( 1000000 );
	//Bind context to desired presence service
	MImFeatures* imFeatures = NULL;
	imFeatures = MImFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( imFeatures );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) );
	MImConversation& imconversation = imFeatures->ImConversation();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) );
	MImConversationInfo *aImMessage = NULL;
	aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC();
	MXIMPIdentity* identity = objFactory.NewIdentityLC();
	identity->SetIdentityL ( KMsgId );
	aImMessage->SetMessageIdL ( identity );
	aImMessage->SetTextMessageL ( message );
	CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 1 );
	CleanupStack::PushL ( aRecipients );  
	aRecipients->AppendL ( username );  //userid of own
	aImMessage->SetRecipientL ( aRecipients );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) );
    //send message is to own
	req = imconversation.SendMessageL ( *aImMessage );
	eventObserver->WaitOpToCompleteL ( req );
	CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage
	//send message to other guy
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) );
	//Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient,
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveMessageL() start" ) );

	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::ReceiveEmptyMessageL
// SendMessage test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::ReceiveEmptyMessageL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveEmptyMessageL() start" ) );
	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );
	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();
	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	//Bind context to desired presence service
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) );
	eventObserver->WaitOpToCompleteL ( req );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "" );
	_LIT ( KEmptyMessage, "" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
   CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures

	CUserAfter::AfterL ( 1000000 );
	//Bind context to desired presence service
	MImFeatures* imFeatures = NULL;
	imFeatures = MImFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( imFeatures );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) );
	MImConversation& imconversation = imFeatures->ImConversation();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) );
	MImConversationInfo *aImMessage = NULL;
	aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC();
	MXIMPIdentity* identity = objFactory.NewIdentityLC();
	identity->SetIdentityL ( KMsgId );
	aImMessage->SetMessageIdL ( identity );
	aImMessage->SetTextMessageL ( KEmptyMessage );
	CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 1 );
	CleanupStack::PushL ( aRecipients );  
	aRecipients->AppendL ( username );  //userid of own
	aImMessage->SetRecipientL ( aRecipients );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) );
    //send message is to own
	req = imconversation.SendMessageL ( *aImMessage );
	eventObserver->WaitOpToCompleteL ( req );
	CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage
	//send message to other guy
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) );
	//Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient,
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveEmptyMessageL() start" ) );

	return KErrNone;

	}

// -----------------------------------------------------------------------------
// Cossadapmt::ReceiveTenMessageL
// SendMessage test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::ReceiveTenMessageL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveTenMessageL() start" ) );
	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );
	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();
	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	//Bind context to desired presence service
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               message;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( message );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) );
	eventObserver->WaitOpToCompleteL ( req );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
    CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures

	CUserAfter::AfterL ( 1000000 );
	//Bind context to desired presence service
	MImFeatures* imFeatures = NULL;
	imFeatures = MImFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( imFeatures );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) );
	MImConversation& imconversation = imFeatures->ImConversation();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) );
	MImConversationInfo *aImMessage = NULL;
	aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC();
	MXIMPIdentity* identity = objFactory.NewIdentityLC();
	identity->SetIdentityL ( KMsgId );
	aImMessage->SetMessageIdL ( identity );
	aImMessage->SetTextMessageL ( message );
	CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 );
	CleanupStack::PushL ( aRecipients );  
	aRecipients->AppendL ( username );  //userid of own
	aImMessage->SetRecipientL ( aRecipients );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) );

	for ( TInt i = 0;i < 10;i++ )
		{
		req = imconversation.SendMessageL ( *aImMessage );
		eventObserver->WaitOpToCompleteL ( req );

		}
	CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) );
    //Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient,
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveTenMessageL() end" ) );

	return KErrNone;

	}

// -----------------------------------------------------------------------------
// Cossadapmt::ReceiveTwentyMessageL
// SendMessage test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::ReceiveTwentyMessageL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveTwentyMessageL() start" ) );
	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );
	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();
	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	//Bind context to desired presence service
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               message;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( message );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) );
	eventObserver->WaitOpToCompleteL ( req );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
   CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures

	CUserAfter::AfterL ( 1000000 );
	//Bind context to desired presence service
	MImFeatures* imFeatures = NULL;
	imFeatures = MImFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( imFeatures );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) );
	MImConversation& imconversation = imFeatures->ImConversation();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) );
	MImConversationInfo *aImMessage = NULL;
	aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC();
	MXIMPIdentity* identity = objFactory.NewIdentityLC();
	identity->SetIdentityL ( KMsgId );
	aImMessage->SetMessageIdL ( identity );
	aImMessage->SetTextMessageL ( message );
	CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 2 );
	CleanupStack::PushL ( aRecipients );  
	aRecipients->AppendL ( username ); //userid's of own
	aImMessage->SetRecipientL ( aRecipients );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) );

	for ( TInt i = 0;i < 20;i++ )
		{
		req = imconversation.SendMessageL ( *aImMessage );
		eventObserver->WaitOpToCompleteL ( req );
		}
	CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) );
    //Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient,
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ReceiveTwentyMessageL() end" ) );

	return KErrNone;

	}


// -----------------------------------------------------------------------------
// Cossadapmt::PublishOwnPresenceL
// Login test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::PublishOwnPresenceL ( CStifItemParser& aItem )
	{



	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::PublishOwnPresenceL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );

	MPresenceFeatures* presenceFeatures = NULL;
    presenceFeatures = MPresenceFeatures::NewL(presecenCtx); 
    CleanupDeletePushL( presenceFeatures );


    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TInt               availability;
    TPtrC               statustext;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextInt ( availability );
	aItem.GetNextString ( statustext );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );
    // Take handles to object factory and publish interface
    MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
    MPresencePublishing& publisher = presenceFeatures->PresencePublishing();
    //Fill presence doc with presence components and attributes
    MPresenceInfo* myPresence = presenceFeatures->PresenceObjectFactory().NewPresenceInfoLC();//1
    MServicePresenceInfo* myServicePresence = presenceFeatures->PresenceObjectFactory().NewServicePresenceInfoLC();//2
    myServicePresence->SetServiceTypeL( NPresenceInfo::NServiceType::KInstantMessaging );
    //MPresenceInfoFieldCollection& attributeFields = myServicePresence->Fields();

    MPersonPresenceInfo *PersonPresence = presenceFeatures->PresenceObjectFactory().NewPersonPresenceInfoLC();
    MPresenceInfoFieldCollection& attributeFields = PersonPresence->Fields();
    
    MPresenceInfoField* infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//3

    // "availability" attribute
    MPresenceInfoFieldValueEnum* availabilityField = presenceFeatures->PresenceObjectFactory().NewEnumInfoFieldLC();//4
    availabilityField->SetValueL( availability ); 
    infoField->SetFieldTypeL( NPresenceInfo::NFieldType::KAvailability ); 
    infoField->SetFieldValue( availabilityField );
    CleanupStack::Pop(); // availabilityField

    attributeFields.AddOrReplaceFieldL(infoField );
    //TInt count = serviceFields.FieldCount();
    CleanupStack::Pop(); // infoField
    
    //status text
    infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//7
    MPresenceInfoFieldValueText* statustextField = presenceFeatures->PresenceObjectFactory().NewTextInfoFieldLC();//8
    statustextField->SetTextValueL( statustext ); // some status text
    infoField->SetFieldTypeL( KStatusTextfield );
    infoField->SetFieldValue( statustextField );
    CleanupStack::Pop(); // statustextField
    attributeFields.AddOrReplaceFieldL( infoField );
    CleanupStack::Pop(); // infoField
    
      
     //online status
    
    infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//7
    MPresenceInfoFieldValueText* onlineField = presenceFeatures->PresenceObjectFactory().NewTextInfoFieldLC();//8
    onlineField->SetTextValueL( _L("T" ) ); // some status text
    infoField->SetFieldTypeL( KOnlineStatusfield );
    infoField->SetFieldValue( onlineField );
    CleanupStack::Pop(); // devmodelField
    attributeFields.AddOrReplaceFieldL( infoField );
    CleanupStack::Pop(); // infoField
     
        
    myPresence->AddServicePresenceL( myServicePresence );
    myPresence->SetPersonPresenceL(PersonPresence);
    TInt count = attributeFields.FieldCount();
    CleanupStack::Pop(2); // myServicePresence,PersonPresence

    	
    //publish the presence
    req = publisher.PublishOwnPresenceL( *myPresence );

    // wait completion
    eventObserver->WaitOpToCompleteL( req );
    CleanupStack::PopAndDestroy(1); // myPresence
        
    CUserAfter::AfterL ( 1000000 );
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 4 ); //presenceFeatures,presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::PublishOwnPresenceL() End" ) );
	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::PublishOwnPresenceEmptyTextL
// Login test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::PublishOwnPresenceEmptyTextL ( CStifItemParser& aItem )
	{



	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::PublishOwnPresenceEmptyTextL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );

	MPresenceFeatures* presenceFeatures = NULL;
    presenceFeatures = MPresenceFeatures::NewL(presecenCtx); 
    CleanupDeletePushL( presenceFeatures );


    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TInt               availability;

	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextInt ( availability );
	_LIT ( KBlankStatusText, "" );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );
    // Take handles to object factory and publish interface
    MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
    MPresencePublishing& publisher = presenceFeatures->PresencePublishing();
    //Fill presence doc with presence components and attributes
    MPresenceInfo* myPresence = presenceFeatures->PresenceObjectFactory().NewPresenceInfoLC();//1
    MServicePresenceInfo* myServicePresence = presenceFeatures->PresenceObjectFactory().NewServicePresenceInfoLC();//2
    myServicePresence->SetServiceTypeL( NPresenceInfo::NServiceType::KInstantMessaging );
    //MPresenceInfoFieldCollection& attributeFields = myServicePresence->Fields();

    MPersonPresenceInfo *PersonPresence = presenceFeatures->PresenceObjectFactory().NewPersonPresenceInfoLC();
    MPresenceInfoFieldCollection& attributeFields = PersonPresence->Fields();
    
    MPresenceInfoField* infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//3

    // "availability" attribute
    MPresenceInfoFieldValueEnum* availabilityField = presenceFeatures->PresenceObjectFactory().NewEnumInfoFieldLC();//4
    availabilityField->SetValueL( availability ); 
    infoField->SetFieldTypeL( NPresenceInfo::NFieldType::KAvailability ); 
    infoField->SetFieldValue( availabilityField );
    CleanupStack::Pop(); // availabilityField

    attributeFields.AddOrReplaceFieldL(infoField );
    //TInt count = serviceFields.FieldCount();
    CleanupStack::Pop(); // infoField
    
    //status text
    infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//7
    MPresenceInfoFieldValueText* statustextField = presenceFeatures->PresenceObjectFactory().NewTextInfoFieldLC();//8
    statustextField->SetTextValueL( KBlankStatusText ); // some status text
    infoField->SetFieldTypeL( KStatusTextfield );
    infoField->SetFieldValue( statustextField );
    CleanupStack::Pop(); // statustextField
    attributeFields.AddOrReplaceFieldL( infoField );
    CleanupStack::Pop(); // infoField
    
      
     //online status
    
    infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//7
    MPresenceInfoFieldValueText* onlineField = presenceFeatures->PresenceObjectFactory().NewTextInfoFieldLC();//8
    onlineField->SetTextValueL( _L("T" ) ); // some status text
    infoField->SetFieldTypeL( KOnlineStatusfield );
    infoField->SetFieldValue( onlineField );
    CleanupStack::Pop(); // devmodelField
    attributeFields.AddOrReplaceFieldL( infoField );
    CleanupStack::Pop(); // infoField
     
        
    myPresence->AddServicePresenceL( myServicePresence );
    myPresence->SetPersonPresenceL(PersonPresence);
    TInt count = attributeFields.FieldCount();
    CleanupStack::Pop(2); // myServicePresence,PersonPresence

    	
    //publish the presence
    req = publisher.PublishOwnPresenceL( *myPresence );

    // wait completion
    eventObserver->WaitOpToCompleteL( req );
    CleanupStack::PopAndDestroy(1); // myPresence
        
    CUserAfter::AfterL ( 1000000 );
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 4 ); //presenceFeatures,presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::PublishOwnPresenceEmptyTextL() End" ) );
	return KErrNone;

	}
TInt Cossadapmt::AcceptnotificationRequestL ( CStifItemParser& aItem )
	{
	
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AcceptAddnotificationRequestL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );
	TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;
    MPresenceAuthorization& authorization = presenceFeatures->PresenceAuthorization();
    MPresenceInfoFilter* infoFilt = presenceFeatures->PresenceObjectFactory().NewPresenceInfoFilterLC();
   
    infoFilt->AcceptPersonFilterL( NPresenceInfo::NFieldType::KAcceptAll );

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "list" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    
	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );
    req = authorization.SubscribePresenceGrantRequestListL();
    
    // wait completion
    
    eventObserver->WaitOpToCompleteL( req );

    CUserAfter::AfterL( 1000000 );
	
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );

	CUserAfter::AfterL ( 5000000 );

    MXIMPIdentity* testContactId = objFactory.NewIdentityLC();
    testContactId->SetIdentityL( KContact1 );
    req = authorization.GrantPresenceForPresentityL(*testContactId ,*infoFilt );
      
    // wait completion
    eventObserver->WaitOpToCompleteL( req );
    

	 CleanupStack::PopAndDestroy();//testContactId
	//Unbind the context and wait completion
	req = presecenCtx->UnbindL();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 6 );//newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient,infoFilt
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::AcceptAddnotificationRequestL() end" ) );

	return KErrNone;
	}


// -----------------------------------------------------------------------------
// Cossadapmt::RejectAddnotificationRequestL
// AddConatctL contacts test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::RejectAddnotificationRequestL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::RejectAddnotificationRequestL() start" ) );

	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );
	TOssAdapMtLogger::Log ( _L ( "Loading presence plugin Done" ) );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;
    MPresenceAuthorization& authorization = presenceFeatures->PresenceAuthorization();
    MPresenceInfoFilter* infoFilt = presenceFeatures->PresenceObjectFactory().NewPresenceInfoFilterLC();
     
     infoFilt->AcceptPersonFilterL( NPresenceInfo::NFieldType::KAcceptAll );

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "list" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    
	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );

	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
	//Wait with CActiveSchedulerWait the binding to complete
	//If binding fails, it is handled with leave
	eventObserver->WaitOpToCompleteL ( req );
    req = authorization.SubscribePresenceGrantRequestListL();
    
    // wait completion
    
    eventObserver->WaitOpToCompleteL( req );

    CUserAfter::AfterL( 1000000 );
	
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
	CUserAfter::AfterL ( 5000000 );

    MXIMPIdentity* testContactId = objFactory.NewIdentityLC();
    testContactId->SetIdentityL( KContact1 );
    req = authorization.WithdrawPresenceGrantFromPresentityL(*testContactId);
      
    // wait completion
    eventObserver->WaitOpToCompleteL( req );
    
    CUserAfter::AfterL( 1000000 );

	 CleanupStack::PopAndDestroy();//testContactId
	//Unbind the context and wait completion
	req = presecenCtx->UnbindL();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->UnbindL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

	CleanupStack::PopAndDestroy ( 6 );//infoFilt,newGroupId,presenceFeatures,presecenCtx,eventObserver,ximpClient
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::RejectAddnotificationRequestL() end" ) );

	return KErrNone;

	}
// -----------------------------------------------------------------------------
// Cossadapmt::ImOperationsCoverageL
// ImOperationsCoverageL test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::ImOperationsCoverageL ( CStifItemParser& aItem )
	{

	//Initialize XIMP client
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ImOperationsCoverageL() start" ) );
	MXIMPClient* ximpClient = MXIMPClient::NewClientL();
	CleanupDeletePushL ( ximpClient );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );
	//Create new sink to receive presence context events
	CUSContextObserver* eventObserver = CUSContextObserver::NewLC();
	//Create new presence context
	MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
	//Bind context to desired presence service
	presecenCtx->RegisterObserverL ( *eventObserver );
	MPresenceFeatures* presenceFeatures = NULL;
	presenceFeatures = MPresenceFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( presenceFeatures );

    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
	TInt                serviceId;
    TPtrC               message;
    TPtrC               contact;
	aItem.GetNextString ( username );
	aItem.GetNextString ( password );
	aItem.GetNextInt ( serviceId );
	aItem.GetNextString ( message );
	aItem.GetNextString ( contact );
	TUid protocolUid = TUid::Uid ( KProtocolUid );

	//Bind context to desired presence service
	TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
	                     username,
	                     password,
	                     serviceId );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called\n" ) );
	eventObserver->WaitOpToCompleteL ( req );
	MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
	MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
	MPresentityGroups& groups = presenceFeatures->PresentityGroups() ;

	TOssAdapMtLogger::Log ( _L ( "presentity groups object created" ) );
	_LIT ( KDummyListId, "" );
	HBufC16* iListId;
	iListId = KDummyListId().AllocL();
	iListId->Des().Fold();
	newGroupId->SetIdentityL ( *iListId );
	delete iListId;
	iListId = NULL;
	req = groups.SubscribePresentityGroupContentL ( *newGroupId );

	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::groups.SubscribePresentityGroupListL() called" ) );

	eventObserver->WaitOpToCompleteL ( req );
   CleanupStack::PopAndDestroy(2); //newGroupId,presenceFeatures

	CUserAfter::AfterL ( 1000000 );
	//Bind context to desired presence service
	MImFeatures* imFeatures = NULL;
	imFeatures = MImFeatures::NewL ( presecenCtx );
	CleanupDeletePushL ( imFeatures );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imFeatures created\n" ) );
	MImConversation& imconversation = imFeatures->ImConversation();
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::imconversation created\n" ) );
	MImConversationInfo *aImMessage = NULL;
	aImMessage = imFeatures->ImObjectFactory().NewImConversationInfoLC();
	MXIMPIdentity* identity = objFactory.NewIdentityLC();
	identity->SetIdentityL ( KMsgId );
	aImMessage->SetMessageIdL ( identity );
	aImMessage->SetTextMessageL ( message );
	CDesCArrayFlat* aRecipients = new ( ELeave ) CDesCArrayFlat ( 1 );
	CleanupStack::PushL ( aRecipients );  
	aRecipients->AppendL ( username );  //userid of own
	aImMessage->SetRecipientL ( aRecipients );
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::before sendmessage called\n" ) );
    //send message is to own
	req = imconversation.SendMessageL ( *aImMessage );
	eventObserver->WaitOpToCompleteL ( req );
	CleanupStack::Pop ( 3 );//identity,aRecipients,aImMessage
	//send message to other guy
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::message sent\n " ) );
	//Unbind the context and wait completion
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
	CleanupStack::PopAndDestroy(4); //imFeatures,presecenCtx,eventObserver,ximpClient,
	TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ImOperationsCoverageL() start" ) );

	return KErrNone;

	}		
// -----------------------------------------------------------------------------
// Cossadapmt::SetAvtarL
// Login test method function.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt Cossadapmt::SetAvtarL ( CStifItemParser& aItem )
    {



    //Initialize XIMP client
    TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SetAvtarL() start" ) );

    MXIMPClient* ximpClient = MXIMPClient::NewClientL();
    CleanupDeletePushL ( ximpClient );
    TOssAdapMtLogger::Log ( _L ( "Cossadapmt::MXIMPClient::NewClientL() start" ) );

    //Create new sink to receive presence context events
    CUSContextObserver* eventObserver = CUSContextObserver::NewLC();

    //Create new presence context
    MXIMPContext* presecenCtx = ximpClient->NewPresenceContextLC();
    TOssAdapMtLogger::Log ( _L ( "Cossadapmt::ximpClient->NewPresenceContextLC() called" ) );
    presecenCtx->RegisterObserverL ( *eventObserver );

    MPresenceFeatures* presenceFeatures = NULL;
    presenceFeatures = MPresenceFeatures::NewL(presecenCtx); 
    CleanupDeletePushL( presenceFeatures );


    //read data from cfg file
    TPtrC               username;
    TPtrC               password;
    TInt                serviceId;
    TPtrC               filename;
    aItem.GetNextString ( username );
    aItem.GetNextString ( password );
    aItem.GetNextInt ( serviceId );
    aItem.GetNextString ( filename );
    TUid protocolUid = TUid::Uid ( KProtocolUid );
    
    //Bind context to desired presence service
    TXIMPRequestId req = presecenCtx->BindToL ( protocolUid,
                         username,
                         password,
                         serviceId );
    TOssAdapMtLogger::Log ( _L ( "Cossadapmt::presecenCtx->BindToL() called" ) );
    //Wait with CActiveSchedulerWait the binding to complete
    //If binding fails, it is handled with leave
    eventObserver->WaitOpToCompleteL ( req );
    // Take handles to object factory and publish interface
    // Take handles to object factory and publish interface
    presenceFeatures = MPresenceFeatures::NewL(presecenCtx); 
    MXIMPObjectFactory& objFactory = presecenCtx->ObjectFactory();
   
    MXIMPIdentity* newGroupId = objFactory.NewIdentityLC();
    MXIMPIdentity* newmemberId = objFactory.NewIdentityLC();

    CleanupDeletePushL( presenceFeatures );

    MPresencePublishing& publisher = presenceFeatures->PresencePublishing();
  
    //Fill presence doc with presence components and attributes
    MPresenceInfo* myPresence = presenceFeatures->PresenceObjectFactory().NewPresenceInfoLC();//1
    MPersonPresenceInfo *PersonPresence = presenceFeatures->PresenceObjectFactory().NewPersonPresenceInfoLC();
    MPresenceInfoFieldCollection& attributeFields = PersonPresence->Fields();
  
    MPresenceInfoField* infoField = presenceFeatures->PresenceObjectFactory().NewInfoFieldLC();//3

   //based on the state conver it to  ximpfw status.
 

    // "availability" attribute
    MPresenceInfoFieldValueBinary* avatarField = presenceFeatures->PresenceObjectFactory().NewBinaryInfoFieldLC();//4
    //avatarField->SetBinaryValueL(*(aImageLoader->GetContentData()));
    _LIT8(KMimeType,"image/gif");
    TBufC8<20> mimetype(KMimeType);

    avatarField->SetMimeTypeL(mimetype.Des());
   RFile file;
   RFs iFs;
   User::LeaveIfError( iFs.Connect() );
   User::LeaveIfError( file.Open( iFs, _L("c:\\index.gif"), EFileRead ) );
   CleanupClosePushL( file );
        
    // Get file size
    TInt fileSize = 0;
    User::LeaveIfError( file.Size( fileSize ) );
    
    // Check file size, if bigger than max transaction content -> leave
  /*  if ( fileSize >
        iImpsFactory.CreateImClientL()->MaxTransactionContentLengthL() )
        {
        User::Leave( KErrOverflow );
        }*/
        
    // Get file content
    HBufC8* Content = HBufC8::NewL( fileSize );
    TPtr8 ptr( Content->Des() );
    User::LeaveIfError( file.Read( ptr, fileSize ) );
    
    avatarField->SetBinaryValueL(*Content);
    infoField->SetFieldTypeL( NPresenceInfo::NFieldType::KAvatar ); 
    infoField->SetFieldValue( avatarField );
    CleanupStack::Pop(); // availabilityField

    attributeFields.AddOrReplaceFieldL(infoField );
 
    CleanupStack::Pop(); // infoField
                  
    myPresence->SetPersonPresenceL(PersonPresence);
    CleanupStack::Pop(1); // PersonPresence

    req = publisher.PublishOwnPresenceL( *myPresence );

    // wait completion
    eventObserver->WaitOpToCompleteL( req );
    CleanupStack::PopAndDestroy(1); // myPresence
        
    req = presecenCtx->UnbindL();
    eventObserver->WaitOpToCompleteL( req );
    TOssAdapMtLogger::Log ( _L ( "Cossadapmt::WaitOpToCompleteL() end" ) );

    CleanupStack::PopAndDestroy ( 4 ); //presenceFeatures,presecenCtx,eventObserver,ximpClient
    TOssAdapMtLogger::Log ( _L ( "Cossadapmt::SetAvtarL() End" ) );
    return KErrNone;

    }
//  [End of File] - Do not remove