diff -r b6f2a363adf7 -r 7797b2f86d2b imservices/ossprotocoladaptation/src/presentitygroups/csubscribepresentitygroupcontentrequest.cpp --- a/imservices/ossprotocoladaptation/src/presentitygroups/csubscribepresentitygroupcontentrequest.cpp Wed Apr 14 16:17:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,309 +0,0 @@ -/* -* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Subscribe Presentity Group content request to the Network Server. -* -*/ - - -#include -#include "csubscribepresentitygroupcontentrequest.h" -#include "cossprotocolconnectionmanager.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "ossprotocolpluginlogger.h" - -#include -#include -#include -#include "stringutils.h" -#include -#include -#include -#include -#include "msgliterals.h" -#include "msg_enums.h" -#include "ossprotocoladaptutils.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::CSubscribePresentityGroupContentRequest() -// --------------------------------------------------------------------------- -// -CSubscribePresentityGroupContentRequest::CSubscribePresentityGroupContentRequest ( - MOSSProtocolConnectionManager& aConnMan, - TXIMPRequestId aRequestId ) : - CActive ( EPriorityNormal ), - iRequestId ( aRequestId ), - iConnMan ( aConnMan ), - iListcount ( 0 ) - { - LOGGER ( TXT ( "::CSubscribePresentityGroupContentRequest Start" ) ); - CActiveScheduler::Add ( this ); - LOGGER ( TXT ( "::CSubscribePresentityGroupContentRequest End" ) ); - } - - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::ConstructL() -// --------------------------------------------------------------------------- -// -void CSubscribePresentityGroupContentRequest::ConstructL() - { - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::ConstructL Start-End" ) ); - iGroupName = NULL; - - } - - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::NewL -// --------------------------------------------------------------------------- -// -CSubscribePresentityGroupContentRequest* CSubscribePresentityGroupContentRequest::NewL ( - MOSSProtocolConnectionManager& aConnMan, - TXIMPRequestId aRequestId ) - { - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::NewL Start" ) ); - - CSubscribePresentityGroupContentRequest* self = new ( ELeave ) - CSubscribePresentityGroupContentRequest ( aConnMan, aRequestId ); - CleanupStack::PushL ( self ); - self->ConstructL(); - CleanupStack::Pop ( self ); - - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::NewL End" ) ); - return self; - } - - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::NewLC() -// --------------------------------------------------------------------------- -// -CSubscribePresentityGroupContentRequest* CSubscribePresentityGroupContentRequest::NewLC ( - MOSSProtocolConnectionManager& aConnMan, - TXIMPRequestId aRequestId ) - { - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::NewLC Start" ) ); - - CSubscribePresentityGroupContentRequest* self = - CSubscribePresentityGroupContentRequest::NewL ( aConnMan, aRequestId ); - CleanupStack::PushL ( self ); - - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::NewLC End" ) ); - return self; - } - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::~CSubscribePresentityGroupContentRequest() -// --------------------------------------------------------------------------- -// -CSubscribePresentityGroupContentRequest::~CSubscribePresentityGroupContentRequest() - { - LOGGER ( TXT ( "::~CSubscribePresentityGroupContentRequest Start" ) ); - delete iGroupName; - iGroupName = NULL; - Cancel(); - //iContacts.ResetAndDestroy(); - LOGGER ( TXT ( "::~CSubscribePresentityGroupContentRequest End" ) ); - } - - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::DoCancel() -// --------------------------------------------------------------------------- -// -void CSubscribePresentityGroupContentRequest::DoCancel() - { - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::DoCancel Start" ) ); - iConnMan.DataHandler().CancelListening(); - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::DoCancel End" ) ); - } - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::RunL() -// --------------------------------------------------------------------------- -// -void CSubscribePresentityGroupContentRequest::RunL() - { - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::RunL Start" ) ); - User::LeaveIfError( iStatus.Int() ); - TRAPD( error, ProcessIncomingDataL( ) ); - if ( error != KErrNone ) - { - Cancel(); - } - - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::RunL End" ) ); - } - - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::RunError -// --------------------------------------------------------------------------- -// -TInt CSubscribePresentityGroupContentRequest::RunError ( TInt aError ) - { - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::RunError Start" ) ); - - iConnMan.HandleToHost().HandleRequestCompleted ( iRequestId, aError ); - - delete this; - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::RunError End" ) ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::SubscribePresentityGroupContentL -// --------------------------------------------------------------------------- -// -void CSubscribePresentityGroupContentRequest::SubscribePresentityGroupContentL ( - const MXIMPIdentity& aIdentity ) - { - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::SubscribePresentityGroupContentL Start" ) ); - if(iGroupName) - { - delete iGroupName; - iGroupName = NULL; - } - iGroupName = aIdentity.Identity().AllocL(); - iConnMan.SetGroupIDL( *iGroupName ); // this groupname is used by contactsync class for synchronisation - - if(iConnMan.DataHandler().IsFetchContactsCompleted()) - { - ProcessIncomingDataL( ); - } - else - { - if ( ! ( this->IsActive() ) ) - { - iConnMan.DataHandler().ListenIncomingData ( iStatus ); - SetActive(); - } - } - - - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::SubscribePresentityGroupContentL End" ) ); - } - - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::ProcessIncomingDataL() -// --------------------------------------------------------------------------- -// -void CSubscribePresentityGroupContentRequest::ProcessIncomingDataL() - { - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::ProcessIncomingDataL Start" ) ); - - PopulateDataL(); - - MXIMPObjectFactory& prfwObjFact = iConnMan.HandleToHost().ObjectFactory(); - - MPresenceObjectFactory& prObjFact = - iConnMan.HandleToHost().ProtocolPresenceDataHost().PresenceObjectFactory(); - - MXIMPIdentity* contactIdentity = NULL; - MPresentityGroupMemberInfo* groupMemberInfo = NULL; - MXIMPObjectCollection* listOfContacts = prfwObjFact.NewObjectCollectionLC(); - - //get the ref to contacts which was already stored in PopulateDataL - RPointerArray& contacts = iConnMan.GetContactManager().GetContactsListL(); - - for(TInt i = 0;iSetIdentityL ( *(contacts[ i ] )); - groupMemberInfo->SetGroupMemberIdL ( contactIdentity ); - groupMemberInfo->SetGroupMemberDisplayNameL ( *(contacts[ i ] ) ); - listOfContacts->AddObjectL ( groupMemberInfo ); - CleanupStack::Pop ( 2 );//groupMemberInfo, contactIdentity - - } - - MXIMPIdentity* groupIdentity = prfwObjFact.NewIdentityLC(); - - groupIdentity->SetIdentityL ( *iGroupName ); - - iConnMan.HandleToHost().ProtocolPresenceDataHost().GroupsDataHost().HandlePresentityGroupContentL ( - groupIdentity, listOfContacts ); - iConnMan.HandleToHost().HandleRequestCompleted ( iRequestId, KErrNone ); - CleanupStack::Pop ( 2 );//groupIdentity,listOfContacts - - delete this; - - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::ProcessIncomingDataL End" ) ); - - } - -// --------------------------------------------------------------------------- -// CSubscribePresentityGroupContentRequest::PopulateDataL -// --------------------------------------------------------------------------- -// -void CSubscribePresentityGroupContentRequest::PopulateDataL() - { - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::PopulateDataL Start" ) ); - - int len = MAX_SIZE_DATA; - char* pResponse = NULL, *pOrigResponse = NULL; - - TInt datacount = iConnMan.DataHandler().IncomingDataCount(); - //to keep the local copy of contacts in adaptation till logout - RPointerArray& contacts = iConnMan.GetContactManager().GetContactsListL(); - - while( datacount ) - { - // get the incoming response from the server with transaction id equals zero - pOrigResponse = pResponse = iConnMan.DataHandler().ResponseL ( 0 ); - CleanupStack::PushL(pOrigResponse) ; - if( pResponse ) - { - pResponse += sizeof ( message_hdr_resp ); - - while(1) - { - len = strlen(pResponse) + 1; - if (1 == len) - { - break; - } - char* contact = pResponse; - pResponse += len; - - HBufC16 *contactName = OssProtocolAdapUtils::ConvertCharToTUint16LC( contact ); - contacts.AppendL(contactName); - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::PopulateDataL:ContactName:%S " ), contactName ); - CleanupStack::Pop ( contactName ); - } - } - - CleanupStack::PopAndDestroy(pOrigResponse) ;//pOrigResponse - - datacount = iConnMan.DataHandler().IncomingDataCount(); - } - - LOGGER ( TXT ( "CSubscribePresentityGroupContentRequest::PopulateDataL End" ) ); - } - - - -// End of file