diff -r f5050f1da672 -r 04becd199f91 javaextensions/satsa/pki/src.s60/caosynchronizer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/satsa/pki/src.s60/caosynchronizer.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,116 @@ +/* +* Copyright (c) 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: +* +*/ + + +#include "caosynchronizer.h" + + + +EXPORT_C CAOSynchronizer* CAOSynchronizer::NewL() +{ + CAOSynchronizer* self = new(ELeave) CAOSynchronizer(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + return self; +} + +CAOSynchronizer::~CAOSynchronizer() +{ + Cancel(); + delete iTimer; + delete iCas; + delete iWait; +} + +void CAOSynchronizer::ConstructL() +{ + if (CActiveScheduler::Current() == NULL) + { + // Need to create our own ActiveScheduler + iCas = new(ELeave) CActiveScheduler; + CActiveScheduler::Install(iCas); + } + + // Register as an active object + CActiveScheduler::Add(this); + iWait = new(ELeave) CActiveSchedulerWait(); +} + +EXPORT_C void CAOSynchronizer::ExecuteL(TTimeIntervalMicroSeconds32 aTimeout) +{ + delete iTimer; + iTimer = NULL; + if (aTimeout > (TTimeIntervalMicroSeconds32)0) + { + iTimer = CTimeOutTimer::NewL(CActive::EPriorityStandard, *this); + iTimer->After(aTimeout); + } + + SetActive(); + + if (iCas) + { + iCas->Start(); + } + else + { + if (!iWait->IsStarted()) + { + iWait->Start(); + } + } +} + +void CAOSynchronizer::Complete() +{ + if (iTimer) + { + iTimer->Cancel(); + } + + if (iCas) + { + iCas->Stop(); + } + else + { + if (iWait->IsStarted()) + { + iWait->AsyncStop(); + } + } +} + +// From CActive +void CAOSynchronizer::DoCancel() +{ + Complete(); +} + +void CAOSynchronizer::RunL() +{ + Complete(); +} + +// From CTimeoutTimer +void CAOSynchronizer::TimerExpired() +{ + Complete(); +} + +