--- /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 <e32base.h>
+#include <e32test.h>
+#include <f32file.h>
+
+// User includes
+#include "ASSrvServerWideData.h"
+#include "ASSrvTimer.h"
+#include <consolealarmalertservermain.h>
+//
+
+// 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<TAlarmCategory>* categories = iSessionEngine->AlarmCategoryListLC();
+ TInt count = categories->Count();
+ for(TInt i=0; i<count; i++)
+ {
+ const TAlarmCategory category = (*categories)[i];
+ iSessionEngine->DeleteAllAlarmsByCategoryL(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();
+ }
+ }