diff -r 000000000000 -r 2e3d3ce01487 commonappservices/alarmserver/Test/TServerSessionEngine.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commonappservices/alarmserver/Test/TServerSessionEngine.cpp Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,237 @@ +// Copyright (c) 1999-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: +// + +#include "TServerSessionEngine.h" + +// System includes +#include +#include +#include + +// User includes +#include "ASSrvServerWideData.h" +#include "ASSrvTimer.h" +#include +// + +// Constants +const TUid KServerUid2={0x1000008D}; +const TUid KServerUid3={0x101F502A}; +const TUidType serverUid(KNullUid,KServerUid2,KServerUid3); + + + + +// +// ----> CTestServerSessionEngine (source) +// + +//************************************************************************************* +CTestServerSessionEngine::CTestServerSessionEngine() + { + iHomeTime.HomeTime(); + } + + +//************************************************************************************* +CTestServerSessionEngine::~CTestServerSessionEngine() + { + delete iTimerObserver; + delete iSessionEngine; + delete iServerWideData; + delete iSession; + delete iChangeObserver; + + // delete the active scheduler + delete CActiveScheduler::Current(); + } + + +//************************************************************************************* +void CTestServerSessionEngine::ConstructL() + { + CActiveScheduler* iScheduler = new(ELeave) CActiveScheduler(); + CActiveScheduler::Install(iScheduler); + + StartAlarmServerL(); + + // + iChangeObserver = new(ELeave) TASSrvAnyEventObserver(); + iSession = new(ELeave) TASSrvSession(); + iServerWideData = CASSrvServerWideData::NewL(); + iSessionEngine = CASSrvSessionEngine::NewL(*iServerWideData, *iChangeObserver, *iSession); + + iTimerObserver = new(ELeave) TASSrvAlarmTimerObserver(); + } + + +//************************************************************************************* +CTestServerSessionEngine* CTestServerSessionEngine::NewLC() + { + CTestServerSessionEngine* self = new(ELeave) CTestServerSessionEngine(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + + +// +// +// + + +//************************************************************************************* +void CTestServerSessionEngine::StartAlarmServerL() + { +#ifdef __WINS__ + // Have to start the alarm alert server otherwise the alarm + // server cannot start. + _LIT(KConsoleAlarmAlertServerImg,"ConsoleAlarmAlertServer"); + RProcess server; + server.Create(KConsoleAlarmAlertServerImg, KNullDesC, serverUid); + TRequestStatus stat; + server.Rendezvous(stat); + if (stat != KRequestPending) + { + server.Kill(0); // abort startup + } + else + { + server.Resume(); // logon OK - start the server + } + + User::WaitForRequest(stat); + TInt result = stat.Int(); + if(result != KErrNone && result != KErrAlreadyExists) + { + User::LeaveIfError(result); + } +#endif // __WINS__ + } + + +// +// +// + + +//************************************************************************************* +TAlarmId CTestServerSessionEngine::AddAlarmWithSpecificTimeL(TInt aSecondsFromNow) + { + TASSrvAlarm alarm(ServerWideData()); + alarm.Category()=KASCliCategoryClock; + alarm.RepeatDefinition()=EAlarmRepeatDefintionRepeatOnce; + TTime time = iHomeTime; + time += TTimeIntervalSeconds(aSecondsFromNow); + // convert time to UTC + time -= User::UTCOffset(); + alarm.SetUtcNextDueTime(time); + iSessionEngine->AlarmAddL(alarm); + + const TAlarmId id = alarm.Id(); + if(id == KNullAlarmId) + User::Leave(KErrGeneral); + + return id; + } + + +//************************************************************************************* +TAlarmId CTestServerSessionEngine::AddAlarmWithSpecificCategoryL(TAlarmCategory aCategory) + { + TASSrvAlarm alarm(ServerWideData()); + alarm.Category()=aCategory; + alarm.RepeatDefinition()=EAlarmRepeatDefintionRepeatOnce; + TTime time = iHomeTime; + // convert time to UTC + time -= User::UTCOffset(); + time += TTimeIntervalSeconds(10); + alarm.SetUtcNextDueTime(time); + iSessionEngine->AlarmAddL(alarm); + + const TAlarmId id = alarm.Id(); + if(id == KNullAlarmId) + User::Leave(KErrGeneral); + + return id; + } + +//************************************************************************************* +void CTestServerSessionEngine::AwaitNotificationL() + { + iServerWideData->Timer().NotifyAlarmExpiredL(*iTimerObserver); + } + +//************************************************************************************* +void CTestServerSessionEngine::ClearAlarmStoreL() + { + // Delete all alarms + RArray* categories = iSessionEngine->AlarmCategoryListLC(); + TInt count = categories->Count(); + for(TInt i=0; iDeleteAllAlarmsByCategoryL(category, EFalse); + } + categories->Close(); + CleanupStack::PopAndDestroy(categories); + } + + +// +// +// + +// +// ----> TASSrvAnyEventObserver (source) +// + +void TASSrvAnyEventObserver::MASSrvAnyEventHandleChange(TAlarmChangeEvent /*aEvent*/, TAlarmId /*aAlarmId*/) + { + } + +// +// +// + +// +// ----> TASSrvSession (source) +// + +TASSrvSessionId TASSrvSession::MASSrvSessionId() const + { + return 0; + } + +void TASSrvSession::MASSrvSessionFullName(TDes& aDes) const + { + aDes = KNullDesC; + } + +// +// +// + +// +// ----> TASSrvAlarmTimerObserver (source) +// + +void TASSrvAlarmTimerObserver::MATimerHandleAlarmExpired(TAlarmTimerEvent aEvent, TAlarmId /*aAlarmId*/) + { + if (aEvent == EAlarmTimerEventAlarmExpired) + { + CActiveScheduler::Stop(); + } + }