commonappservices/alarmserver/Test/TServerSessionEngine.cpp
changeset 0 2e3d3ce01487
--- /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();
+		}
+	}