srsf/nssvascontacthdlr/src/nssvasccontacthandler.cpp
branchRCL_3
changeset 18 cad71a31b7fc
parent 17 8ce15fced3a6
child 19 e36f3802f733
--- a/srsf/nssvascontacthdlr/src/nssvasccontacthandler.cpp	Thu Aug 19 09:56:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,324 +0,0 @@
-/*
-* Copyright (c) 2004-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:  Responsible for maintaining synchronization between the contact DB
-*               and the VAS DB
-*
-*/
-
-
-// INCLUDE FILES
-#include "nssvasccontacthandler.h"
-#include "nssvasccontacthandlerimpl.h"
-#include "rubydebug.h"
-
-// CONSTANTS
-// Thread name
-_LIT( KCHThreadName, "NssVasCHThread" );
-// Thread priority
-const TThreadPriority KCHThreadPriority = EPriorityAbsoluteLow;
-// Thread heap min-max
-const TInt KCHHeapMinSize = KMinHeapSize;
-const TInt KCHHeapMaxSize = 0x300000;
-
-/**
-*  Utility class to handle cleanup of ContactHandler thread
-*/
-NONSHARABLE_CLASS( CContactHandlerStopper ) : public CAsyncOneShot
-    {
-    public:
-        static CContactHandlerStopper* NewL( TInt aPriority );
-        virtual ~CContactHandlerStopper();
-        void StopCH();
-    protected:
-        void RunL();
-        void DoCancel();
-    private:
-        CContactHandlerStopper( TInt aPriority );
-    };
-
-// ---------------------------------------------------------
-// CNssContactHandler::CNssContactHandler
-// C++ constructor.
-// ---------------------------------------------------------
-//       
-CNssContactHandler::CNssContactHandler():
-    iStopper( NULL )
-    {
-    // Nothing
-    }
-
-// ---------------------------------------------------------
-// CNssContactHandler::NewL
-// Two-phased constructor.
-// ---------------------------------------------------------
-//
-EXPORT_C CNssContactHandler* CNssContactHandler::NewL()
-    {
-    RUBY_DEBUG_BLOCK("CNssContactHandler::NewL");
-    CNssContactHandler* self = new (ELeave) CNssContactHandler();
-
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CNssContactHandler::ConstructL
-// Second-phase constructor.
-// ---------------------------------------------------------
-//
-void CNssContactHandler::ConstructL()
-    {
-    // Create processing thread
-    RThread chThread;
-
-    iThreadNameBuf.Append( _L( "[" ) );
-    // Add this pointer to the thread name to get it unique
-    iThreadNameBuf.AppendNum( ( TInt ) this );
-    iThreadNameBuf.Append( _L( "]" ) );
-    iThreadNameBuf.Append( KCHThreadName );
-
-    //RUBY_DEBUG1( "CNssContactHandler::ConstructL starting a thread with name: %S", iThreadNameBuf );
-
-    User::LeaveIfError( chThread.Create( iThreadNameBuf, CHThreadFunction, KDefaultStackSize, KCHHeapMinSize, KCHHeapMaxSize, this ) );
-
-    chThread.SetPriority( KCHThreadPriority );
-    chThread.Resume();
-    chThread.Close();    
-    }
-
-// ---------------------------------------------------------
-// CNssContactHandler::~CNssContactHandler
-// Destructor.
-// ---------------------------------------------------------
-//
-EXPORT_C CNssContactHandler::~CNssContactHandler()
-    {
-    RUBY_DEBUG0("CNssContactHandlerImplementation::~CNssContactHandler");
-
-    // Check if Contact Handler thread is still alive
-    RThread chThread;
-
-    _LIT( KProcessThreadDelimeter, "::" );
-    TBuf<256> fullThreadName;
-	RProcess currentProcess;
-    fullThreadName.Append( currentProcess.FullName() );
-    fullThreadName.Append( KProcessThreadDelimeter );
-    fullThreadName.Append( iThreadNameBuf );
-
-    if ( chThread.Open( fullThreadName ) == KErrNone )
-        {
-        // Increase the thread priority to get the cleanup done quickly
-        // Fixes priority inversion problem
-        chThread.SetPriority( RThread().Priority() );
-        RUBY_DEBUG1("CNssContactHandlerImplementation::~CNssContactHandler increased priority to: %d", chThread.Priority() );
-
-        if ( iStopper )
-            {
-            // Start AO which stops the ActiveScheduler in ContactHandler thread
-            // -> ContactHandler thread will clean itself
-            iStopper->StopCH();
-            iStopper = NULL;
-
-            // Wait that cleanup of ContactHandler thread has been done properly
-            TRequestStatus threadCompletion;
-            chThread.Rendezvous( threadCompletion );
-            User::WaitForRequest( threadCompletion );
-            }
-
-        chThread.Kill( KErrNone );
-
-        chThread.Close();
-        }
-    else
-        {
-        //RUBY_ERROR1( "CNssContactHandlerImplementation::~CNssContactHandler failed to open thread: %S", iThreadNameBuf );
-        }
-    }
-
-// ---------------------------------------------------------
-// CNssContactHandler::DisableEventHandling
-// Disables the event handling.
-// ---------------------------------------------------------
-//
-EXPORT_C void CNssContactHandler::DisableEventHandling()
-   {
-   RUBY_DEBUG0( "CNssContactHandler::DisableEventHandling" );
-   }
-
-// ---------------------------------------------------------
-// CNssContactHandler::EnableEventHandling
-// Enables event handling
-//---------------------------------------------------------
-//
-EXPORT_C void CNssContactHandler::EnableEventHandling()
-   {
-   RUBY_DEBUG0( "CNssContactHandler::EnableEventHandling" );
-   }
-
-// ---------------------------------------------------------
-// CNssContactHandler::SetStopperPointer
-// Sets the pointer to stopper object.
-//---------------------------------------------------------
-//
-void CNssContactHandler::SetStopperPointer( CContactHandlerStopper* aStopper )
-    {
-    iStopper = aStopper;
-    }
-
-// ---------------------------------------------------------
-// CNssContactHandler::CHThreadFunction
-// ContactHandler thread function.
-// ---------------------------------------------------------
-//
-TInt CNssContactHandler::CHThreadFunction( TAny* aParams )
-    {
-    TInt result = KErrNone;
-    // CleanupStack creation
-    CTrapCleanup* cleanupStack = CTrapCleanup::New();
-
-    // ActiveScheduler creation
-    CActiveScheduler* scheduler = NULL;
-    TRAPD( error, scheduler = new (ELeave) CActiveScheduler() );
-    if ( error == KErrNone )
-        {
-        // Take created ActiveScheduler into use
-        CActiveScheduler::Install( scheduler );
-
-        // Create utility object which is used when stopping this thread
-        CNssContactHandler* self = ( CNssContactHandler* )aParams;
-        CContactHandlerStopper* stopper = NULL;
-        TRAP( error, stopper  = CContactHandlerStopper::NewL( EPriorityNormal ) );
-        if ( error == KErrNone )
-            {
-            self->SetStopperPointer( stopper );
-
-            // Implementation of VAS ContactHandler
-            CNssContactHandlerImplementation* impl = NULL;
-            TRAP( error, impl = CNssContactHandlerImplementation::NewL() );
-
-            if ( error == KErrNone )
-                {
-                CActiveScheduler::Start();
-
-                delete impl;
-                self->SetStopperPointer( NULL );
-                delete stopper;
-                delete scheduler;
-                delete cleanupStack;
-
-                // Signal that cleanup of ContactHandler thread is now ok
-                RThread().Rendezvous( KErrNone );
-
-                result = KErrNone;                
-                }  // If created implementation
-            else
-                {
-                RUBY_ERROR1( "CNssContactHandler::CHThreadFunction Failed to create CH implementation. Error [%d]",
-                            error );
-                            
-                self->SetStopperPointer( NULL );
-                delete stopper;
-                delete scheduler;
-                result = error;
-                }
-                
-            // Self pointer not needed anymore
-            self = NULL;
-
-            }  // if created stopper
-        else 
-            {
-            RUBY_ERROR1( "CNssContactHandler::CHThreadFunction Failed to create CContactHandlerStopper. Error [%d]", 
-                        error );
-            delete scheduler;
-            result = error;
-            }
-        
-        }  // if created scheduler
-   else 
-        {
-        RUBY_ERROR1( "CNssContactHandler::CHThreadFunction Failed to create the active scheduler. Error [%d]", 
-                    error );
-        result = error;
-        }
-    
-    return result;
-    }
-
-// ---------------------------------------------------------
-// CContactHandlerStopper::NewL
-// Two-phased constructor.
-// ---------------------------------------------------------
-//
-CContactHandlerStopper* CContactHandlerStopper::NewL( TInt aPriority )
-	{
-	CContactHandlerStopper* self = new (ELeave) CContactHandlerStopper( aPriority );
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CContactHandlerStopper::~CContactHandlerStopper
-// Desctructor.
-// ---------------------------------------------------------
-//
-CContactHandlerStopper::~CContactHandlerStopper()
-	{
-    Cancel();
-	}
-
-// ---------------------------------------------------------
-// CContactHandlerStopper::CContactHandlerStopper
-// C++ constructor.
-// ---------------------------------------------------------
-//
-CContactHandlerStopper::CContactHandlerStopper( TInt aPriority ) : 
-    CAsyncOneShot( aPriority )
-	{
-	// Nothing
-	}
-
-// ---------------------------------------------------------
-// CContactHandlerStopper::StopCH
-// Method to request stopping.
-// ---------------------------------------------------------
-//
-void CContactHandlerStopper::StopCH()
-    {
-    Call();
-    }
-
-// ---------------------------------------------------------
-// CContactHandlerStopper::RunL
-// From CActive.
-// ---------------------------------------------------------
-//
-void CContactHandlerStopper::RunL()
-    {
-    CActiveScheduler::Stop();
-    }
-
-// ---------------------------------------------------------
-// CContactHandlerStopper::DoCancel
-// From CActive.
-// ---------------------------------------------------------
-//
-void CContactHandlerStopper::DoCancel()
-    {
-    // Nothing
-    }
-
-// End of file