ncdengine/provider/server/src/ncdserverreportoperationimpl.cpp
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/server/src/ncdserverreportoperationimpl.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,164 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  
+*
+*/
+
+
+#include "ncdserverreportoperationimpl.h"
+#include "ncdreportmanager.h"
+#include "catalogsbasemessage.h"
+#include "catalogscontext.h"
+#include "ncdgeneralmanager.h"
+
+#include "catalogsdebug.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+//
+CNcdServerReportOperation* CNcdServerReportOperation::NewL(
+    CNcdGeneralManager& aGeneralManager,
+    MNcdOperationRemoveHandler& aRemoveHandler, 
+    CNcdReportManager& aReportManager,
+    MCatalogsSession& aSession )
+    {
+    CNcdServerReportOperation* self = new( ELeave ) CNcdServerReportOperation( 
+        aGeneralManager, aRemoveHandler, aReportManager, aSession );
+    CleanupClosePushL( *self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CNcdServerReportOperation::~CNcdServerReportOperation()
+    {
+    DLTRACEIN( ( "" ) );    
+    }
+
+
+// ---------------------------------------------------------------------------
+// Report manager
+// ---------------------------------------------------------------------------
+//
+CNcdReportManager& CNcdServerReportOperation::ReportManager()
+    {
+    return iReportManager;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Cancel
+// ---------------------------------------------------------------------------
+//
+void CNcdServerReportOperation::Cancel() 
+    {    
+    DLTRACEIN(( "" ));
+    ReportManager().CancelReportSending();
+    DLTRACEOUT(( "" ));
+    }
+
+
+// ---------------------------------------------------------------------------
+// RunOperation
+// ---------------------------------------------------------------------------
+//
+TInt CNcdServerReportOperation::RunOperation()
+    {
+    DLTRACEIN(( "Pending message: %X", iPendingMessage ));
+    
+    if ( !iPendingMessage ) 
+        {      
+        DLTRACE(("No pending message"));  
+        return KErrNotReady;
+        }
+    
+    // Start download.
+    DLINFO(("Starting reporting"));
+    TRAPD( trapError, ReportManager().StartSendReportsL( *this ) );
+
+    DLTRACEOUT(("trapError: %d", trapError));
+    return trapError;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CNcdServerReportOperation::CNcdServerReportOperation(
+    CNcdGeneralManager& aGeneralManager,
+    MNcdOperationRemoveHandler& aRemoveHandler,
+    CNcdReportManager& aReportManager,
+    MCatalogsSession& aSession )
+    :
+    CNcdBaseOperation( aGeneralManager, &aRemoveHandler, EServerReportOperation, aSession ), 
+    iReportManager( aReportManager )        
+    {
+    }
+
+
+// ---------------------------------------------------------------------------
+// ConstructL
+// ---------------------------------------------------------------------------
+//
+void CNcdServerReportOperation::ConstructL()
+    {
+    DLTRACEIN( ( "" ) );
+
+    // Call ConstructL for the base class
+    CNcdBaseOperation::ConstructL();
+
+    DLTRACEOUT(( "" ));
+    }
+    
+void CNcdServerReportOperation::Progress( CNcdBaseOperation& /*aOperation*/ )
+    {
+    DLTRACEIN((""));
+    }
+
+void CNcdServerReportOperation::QueryReceived(
+    CNcdBaseOperation& /*aOperation*/, CNcdQuery* /*aQuery*/ )
+    {
+    DLTRACEIN((""));
+    }
+
+void CNcdServerReportOperation::OperationComplete( 
+    CNcdBaseOperation* aOperation, TInt aError )
+    {
+    DLTRACEIN(("aOperation=%08x, aError=%d", aOperation, aError));
+    (void) aOperation; // suppresses compiler warning
+
+    // Check if pending message still exists.
+    // In case of the operation cancel, the pending message may have
+    // already been completed and set to NULL. Then, do not try to
+    // complete the same message again.
+    if ( iPendingMessage )
+        {
+        DLINFO(("Completing server report operation with %d", aError));
+        CompleteMessage( iPendingMessage, 
+            aError != KErrNone ? 
+                ENCDOperationMessageCompletionError : 
+                ENCDOperationMessageCompletionComplete, 
+            aError );        
+        }
+    }
+