sl@0: // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include sl@0: #include "LOGPANIC.H" sl@0: sl@0: #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS sl@0: /** sl@0: @internalAll sl@0: */ sl@0: const TInt KLogActiveDoNotCompleteIfActive = KMaxTInt-1; sl@0: sl@0: #endif sl@0: sl@0: EXPORT_C CLogActive::CLogActive(TInt aPriority) sl@0: : CActive(aPriority) sl@0: { sl@0: CActiveScheduler::Add(this); sl@0: } sl@0: sl@0: sl@0: EXPORT_C CLogActive::~CLogActive() sl@0: { sl@0: } sl@0: sl@0: EXPORT_C void CLogActive::Queue(TRequestStatus& aStatus) sl@0: { sl@0: __ASSERT_DEBUG(iReport==NULL, Panic(ELogAlreadyActive)); sl@0: sl@0: aStatus=KRequestPending; sl@0: iReport=&aStatus; sl@0: } sl@0: sl@0: EXPORT_C void CLogActive::DoCancel() sl@0: { sl@0: TInt result=KErrCancel; sl@0: Complete(result); sl@0: } sl@0: sl@0: EXPORT_C void CLogActive::RunL() sl@0: { sl@0: TInt status=iStatus.Int(); sl@0: if (status>=KErrNone) sl@0: { sl@0: TRAPD(error,DoRunL()); sl@0: __ASSERT_DEBUG(error==KErrNone || !IsActive(), User::Invariant()); sl@0: if (IsActive()) sl@0: return; sl@0: status=error; sl@0: } sl@0: Complete(status); sl@0: } sl@0: sl@0: EXPORT_C void CLogActive::Complete(TInt aStatus) sl@0: { sl@0: if (iReport) sl@0: { sl@0: DoComplete(aStatus); sl@0: if (IsActive() && aStatus == KLogActiveDoNotCompleteIfActive) sl@0: return; sl@0: User::RequestComplete(iReport, aStatus); sl@0: } sl@0: } sl@0: sl@0: EXPORT_C void CLogActive::DoComplete(TInt&) sl@0: { sl@0: }