tzservices/tzserver/Server/Include/timezoneserver.h
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tzservices/tzserver/Server/Include/timezoneserver.h	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,176 @@
+// Copyright (c) 1997-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:
+//
+
+#ifndef __TIMEZONE_SERVER_H__
+#define __TIMEZONE_SERVER_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <s32file.h>
+#include <tz.h>
+#include "tzconfigagent.h"
+#include "tzlocalizationdb.h"
+#include "tzswiobserver.h"
+
+const TUint KTimeZoneServerMajorVersion = 0;
+const TUint KTimeZoneServerMinorVersion = 1;
+const TUint KTimeZoneServerBuildVersion = 1;
+
+// Structures
+struct TRendezvous
+	{
+	TThreadId iId;
+	TRequestStatus* iStatus;
+	};
+
+class CTzServer;
+class CTzUserDataDb;
+class CTzUserDataCache;
+
+#define KCapabilityNone 0
+#define KCapabilityWriteDeviceData 1000
+#define KCapabilityReadUserData 2000
+#define KCapabilityWriteUserData 3000
+
+_LIT(KTimeZoneServerName,"!TzServer");
+
+/* CTzServer
+@internalComponent
+*/
+class CTzServer : public CPolicyServer, public MTZCfgAgentObserver
+	{
+public:
+	enum TFunctionCode
+		{
+		EGetLocalTimeZoneId = KCapabilityNone,
+		EConvertLocalZoneTime,
+		EConvertForeignZoneTime,
+		EGetLocalEncodedTimeZoneRulesSize,
+		EGetLocalOlsenEncodedTimeZoneRulesSize,
+		EGetForeignEncodedTimeZoneRulesSize,
+		EGetLocalEncodedTimeZoneRules,
+		EGetLocalOlsenEncodedTimeZoneRules,
+		EGetForeignEncodedTimeZoneRules,
+		EGetTimeZoneFormat,
+		ERegisterTimeChangeNotifier,
+		ECancelRequestforNotice,
+		ESrvOpcodeResourceCount,
+		ESrvOpcodeSetHeapFailure,
+		EGetOffsetsForTimeZoneIds,
+		EIsDaylightSavingOn,
+		EAutoUpdate,
+		EGetUserTimeZoneNamesSize,
+		EGetUserTimeZoneNames,
+		EGetUserTimeZoneIds,
+		EGetUserTimeZoneIdsSize,
+		ESwiObsBegin,
+		ESwiObsFileChanged,
+		ESwiObsEnd,
+		ESrvOpcodeResetHeap,
+		ESetTimeZone = KCapabilityWriteDeviceData,
+		EEnableAutoUpdate,  // Also has WriteDeviceData capability.
+		ENotifyHomeTimeZoneChanged,
+		ESetHomeTime,
+		ESetUnknownZoneTime,
+		ECreateUserTimeZone,
+        EUpdateUserTimeZone,
+        EDeleteUserTimeZone,
+        ELocalizationReadCitiesSize = KCapabilityReadUserData,
+        ELocalizationReadCitiesTzIdSize,
+        ELocalizationReadCitiesInGroupSize,
+        ELocalizationReadCities,
+        ELocalizationReadFrequentlyUsedZoneSize,
+        ELocalizationReadFrequentlyUsedZone,
+        ELocalizationReadCachedTimeZoneCitySize,
+        ELocalizationReadCachedTimeZoneCity,
+        ELocalizationOpenDb = KCapabilityWriteUserData,
+        ELocalizationCloseDb,
+        ELocalizationWriteCity,
+        ELocalizationDeleteCity,
+        ELocalizationWriteFrequentlyUsedZone,
+        ELocalizationWriteAllFrequentlyUsedZones,
+		ENotSupported
+		};
+
+public:
+	static CTzServer* NewL();
+	~CTzServer();
+	
+private:
+	CTzServer(TInt aPriority);
+	void ConstructL();
+
+public:
+	inline CTzConfigAgent& TimeZoneManager() const;
+	inline CTzUserDataDb& UserTimeZoneDb() const; 
+	inline CTzLocalizationDb& LocalizationDb() const;
+	inline CTzSwiObserver& SwiObserver() const;
+	
+	void SessionClosed() const;
+	void SessionAdded() const;	// required to be const to avoid compiler error
+	void Error(TInt aError);
+
+private:
+	// from MTZCfgAgentObserver
+	void NotifyTZStatusChange(RTz::TTzChanges aChange, const TAny* aRequester);
+
+	virtual CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const;
+
+private:
+	mutable TInt iSessionCount;
+	CTzConfigAgent* iTimeZoneMgr;
+	CTzUserDataDb* iTzUserDataDb;
+	CTzLocalizationDb* iTzLocalizationDb;
+	CTzSwiObserver* iTzSwiObserver;
+	};
+	
+//
+// Active scheduler
+//
+class CTZSrvScheduler : public CActiveScheduler
+	{
+public:
+	~CTZSrvScheduler();
+	static CTZSrvScheduler* NewL();
+
+private:
+	// from CActiveScheduler
+	virtual void Error(TInt aError) const;
+
+private:
+	CTzServer* iServer;
+	};
+
+inline CTzConfigAgent& CTzServer::TimeZoneManager() const 
+	{
+	return *iTimeZoneMgr;
+	}
+	
+inline CTzUserDataDb& CTzServer::UserTimeZoneDb() const 
+	{
+	return *iTzUserDataDb;
+	}
+
+inline CTzLocalizationDb& CTzServer::LocalizationDb() const
+	{
+	return *iTzLocalizationDb;
+	}
+
+inline CTzSwiObserver& CTzServer::SwiObserver() const
+	{
+	return *iTzSwiObserver;
+	}
+
+#endif