PECengine/ListLibrary2/ContactListSrc/CPEngGetWatchersTransaction.cpp
branchRCL_3
changeset 17 a941bc465d9f
parent 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/ListLibrary2/ContactListSrc/CPEngGetWatchersTransaction.cpp	Wed Sep 01 12:31:13 2010 +0100
@@ -0,0 +1,244 @@
+/*
+* Copyright (c) 2005 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:  Handler to get watcher list.
+*
+*/
+
+// INCLUDE FILES
+#include "CPEngGetWatchersTransaction.h"
+
+#include "CPEngWatcherList.h"
+#include "CPEngContactListModItemContainer.h"
+#include "CPEngContactListModChangeMonitor.h"
+
+#include "PEngListLibTools.h"
+#include "MPEngXMLSerializer.h"
+#include "MPEngXMLParser.h"
+
+#include "CPEngTransactionStatus.h"
+#include "PEngWVPresenceErrors2.h"
+#include "PresenceDebugPrint.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::CPEngGetWatchersTransaction()
+// -----------------------------------------------------------------------------
+//
+CPEngGetWatchersTransaction::CPEngGetWatchersTransaction(
+    CPEngContactListModBase& aWatchers,
+    TPEngWVCspVersion& aCSPVersion,
+    TInt aOperationId )
+        : iIsTransactionCompleted( EFalse ),
+        iWatchers( aWatchers ),
+        iCSPVersion( aCSPVersion ),
+        iOperationId( aOperationId )
+    {
+    PENG_DP( D_PENG_LIT( "CPEngGetWatchersTransaction::CPEngGetWatchersTransaction()" ) );
+
+    iWatchers.Open();                   // CSI: 65 #
+    iWatchers.BufferServerSideNotifications();
+    iWatchers.Lock( EStorageLockLevelHigh );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CPEngGetWatchersTransaction::ConstructL()
+    {
+    iTransactionStatus =  CPEngTransactionStatus::NewL();
+    iIsTransactionCompleted = EFalse;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::NewLC()
+// -----------------------------------------------------------------------------
+//
+CPEngGetWatchersTransaction* CPEngGetWatchersTransaction::NewLC(
+    CPEngContactListModBase& aWatchers,
+    TPEngWVCspVersion& aCSPVersion,
+    TInt aOperationId )
+    {
+    CPEngGetWatchersTransaction* self =
+        new ( ELeave ) CPEngGetWatchersTransaction(
+        aWatchers,
+        aCSPVersion,
+        aOperationId );
+
+    CleanupStack::PushL( self );
+    self->ConstructL( );
+
+    return self;
+    }
+
+
+// Destructor
+CPEngGetWatchersTransaction::~CPEngGetWatchersTransaction()
+    {
+    iWatchers.ReleaseServerSideBuffering();
+    iWatchers.Unlock();
+    iWatchers.Close();
+    delete iTransactionStatus;
+    }
+
+
+// ===========================================================================
+// ============Function from MPEngOutgoingTransactionHandler =================
+// ===========================================================================
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::RequestL()
+// -----------------------------------------------------------------------------
+//
+void CPEngGetWatchersTransaction::RequestL(
+    TDes8& aSendBuffer )
+    {
+    aSendBuffer.Zero();
+    MPEngXMLSerializer* xmlSerializer = CreateXmlSerializerL( aSendBuffer );
+    CleanupClosePushL( *xmlSerializer );
+
+    // <TransactionContent xmlns="http://www.wireless -village.org/TRC1.1">
+    NListLibTools::AppendTransactionContentTagXmlL( *xmlSerializer, iCSPVersion );
+
+    // <GetWatcherList-Request/>
+    xmlSerializer->StartTagL( KGetWatchers
+                            ).EndTagL( KGetWatchers );
+
+    // </TransactionContent>
+    xmlSerializer->EndTagL( KTransactionContent );
+    CleanupStack::PopAndDestroy( ); // xmlSerializer
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::LastRunningTransactionHandler()
+// -----------------------------------------------------------------------------
+//
+void CPEngGetWatchersTransaction::LastRunningTransactionHandler()
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::ProcessResponseL()
+// -----------------------------------------------------------------------------
+//
+void CPEngGetWatchersTransaction::ProcessResponseL(
+    const TDesC8& aResponse,
+    TRequestStatus& /* aStatus */ )
+    {
+    PENG_DP( D_PENG_LIT( "CPEngGetWatchersTransaction::ProcessResponseL()" ) );
+
+    // transaction to server was successful
+    RReffArray<CPEngContactListModItemContainer> newContacts;
+    CleanupClosePushL( newContacts );
+    MPEngXMLParser* XMLparser = CreateXMLParserLC();
+
+    // parse result if it exists
+    TBool resultFound( EFalse );
+    TInt err( XMLparser->ParseResultL( aResponse,
+                                       iOperationId,
+                                       *iTransactionStatus,
+                                       resultFound ) );
+
+    if ( ( err == KErrNone ) && NListLibTools::ParseContactListIDsL( aResponse,
+                                                                     newContacts,
+                                                                     iWatchers,
+                                                                     *XMLparser,
+                                                                     ETrue ) )
+        {
+        iWatchers.AdoptNewContactsL( newContacts );
+        }
+
+    CleanupStack::PopAndDestroy( 2 ); // newContacts, XMLparser
+    iIsTransactionCompleted =  ETrue;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::CancelProcessing()
+// -----------------------------------------------------------------------------
+//
+void CPEngGetWatchersTransaction::CancelProcessing( )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::GetNewOutGoingTransactionHandlersL()
+// -----------------------------------------------------------------------------
+//
+void CPEngGetWatchersTransaction::NewTransactionHandlersL(
+    RPointerArray<MPEngOutgoingTransactionHandler>& /* aTransactionsArray*/ )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::TransactionCompleted()
+// -----------------------------------------------------------------------------
+//
+TBool CPEngGetWatchersTransaction::TransactionCompleted()
+    {
+    return iIsTransactionCompleted;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::TransactionResult()
+// -----------------------------------------------------------------------------
+//
+CPEngTransactionStatus* CPEngGetWatchersTransaction::TransactionResult()
+    {
+    CPEngTransactionStatus* temp = iTransactionStatus;
+    iTransactionStatus = NULL;
+    return temp;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPEngGetWatchersTransaction::ReleaseHandler()
+// -----------------------------------------------------------------------------
+//
+void CPEngGetWatchersTransaction::ReleaseHandler()
+    {
+    iIsTransactionCompleted =  ETrue;
+    }
+
+//  End of File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+