diff -r 35488577e233 -r 2fa1fa551b0b satengine/SatServer/Engine/src/CSatThreadDeathMonitor.cpp --- a/satengine/SatServer/Engine/src/CSatThreadDeathMonitor.cpp Mon Aug 23 15:50:31 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* -* Copyright (c) 2002-2009 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: Monitors threads death and notifies an event, when thread dies -* -*/ - - - -// INCLUDE FILES -#include "CSatThreadDeathMonitor.h" -#include "MThreadDeathObserver.h" -#include "SatLog.h" -#include "MSatUtils.h" - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CSatThreadDeathMonitor::CSatThreadDeathMonitor -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CSatThreadDeathMonitor::CSatThreadDeathMonitor() : CActive( EPriorityStandard ) - { - LOG( SIMPLE, - "SATENGINE: CSatThreadDeathMonitor::CSatThreadDeathMonitor calling" ) - - CActiveScheduler::Add( this ); - - LOG( SIMPLE, - "SATENGINE: CSatThreadDeathMonitor::CSatThreadDeathMonitor exiting" ) - } - -// ----------------------------------------------------------------------------- -// CSatThreadDeathMonitor::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CSatThreadDeathMonitor* CSatThreadDeathMonitor::NewL() - { - LOG( SIMPLE, "SATENGINE: CSatThreadDeathMonitor::NewL calling" ) - CSatThreadDeathMonitor* deathMonitor = new( ELeave ) CSatThreadDeathMonitor; - LOG( SIMPLE, "SATENGINE: CSatThreadDeathMonitor::NewL exiting" ) - return deathMonitor; - } - - -// Destructor -CSatThreadDeathMonitor::~CSatThreadDeathMonitor() - { - LOG( SIMPLE, - "SATENGINE: CSatThreadDeathMonitor::~CSatThreadDeathMonitor calling" ) - Cancel(); - iThread.Close(); - iObserver = NULL; - LOG( SIMPLE, - "SATENGINE: CSatThreadDeathMonitor::~CSatThreadDeathMonitor exiting" ) - } - -// ----------------------------------------------------------------------------- -// CSatThreadDeathMonitor::NotifyThreadDeathL -// Prepares to notify observer of threads death -// ----------------------------------------------------------------------------- -// -void CSatThreadDeathMonitor::NotifyThreadDeathL( - const TThreadId& aThreadId, - MThreadDeathObserver& aObserver ) - { - - LOG( SIMPLE, - "SATENGINE: CSatThreadDeathMonitor::NotifyThreadDeathL calling" ) - Cancel(); - - iThread.Close(); - - User::LeaveIfError( iThread.Open( aThreadId ) ); - - iObserver = &aObserver; - StartObservingThreadDeath(); - LOG( SIMPLE, - "SATENGINE: CSatThreadDeathMonitor::NotifyThreadDeathL exiting" ) - } - -// ----------------------------------------------------------------------------- -// CSatThreadDeathMonitor::StartObservingThreadDeath -// Logons to thread and starts observing it's state -// ----------------------------------------------------------------------------- -// -void CSatThreadDeathMonitor::StartObservingThreadDeath() - { - LOG( SIMPLE, "SATENGINE: CSatThreadDeathMonitor::\ - StartObservingThreadDeath calling" ) - iThread.Logon( iStatus ); - SetActive(); - LOG( SIMPLE, "SATENGINE: CSatThreadDeathMonitor::\ - StartObservingThreadDeath exiting" ) - } - -// ----------------------------------------------------------------------------- -// CSatThreadDeathMonitor::DoCancel -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CSatThreadDeathMonitor::DoCancel() - { - LOG( SIMPLE, "SATENGINE: CSatThreadDeathMonitor::DoCancel calling" ) - iThread.LogonCancel( iStatus ); - LOG( SIMPLE, "SATENGINE: CSatThreadDeathMonitor::DoCancel exiting" ) - } - -// ----------------------------------------------------------------------------- -// CSatThreadDeathMonitor::RunL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CSatThreadDeathMonitor::RunL() - { - LOG( SIMPLE, "SATENGINE: CSatThreadDeathMonitor::RunL calling" ) - - const TExitType exitType( iThread.ExitType() ); - - if ( EExitPending == exitType ) // If thread is still alive, restart - { - LOG( SIMPLE, " Thread is still alive" ) - StartObservingThreadDeath(); - } - else if ( EExitPanic == exitType ) - { - LOG( SIMPLE, " Thread has panicked" ) - iThread.Close(); - iObserver->ThreadPanicedL(); - } - else - { - LOG( SIMPLE, " Thread is dead" ) - iThread.Close(); - iObserver->ThreadDiedL(); - } - LOG( SIMPLE, "SATENGINE: CSatThreadDeathMonitor::RunL exiting" ) - } - -// End of File