phonebookengines/contactsmodel/cntsrv/inc/CCntServer.h
changeset 0 e686773b3f54
child 24 0ba2181d7c28
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/contactsmodel/cntsrv/inc/CCntServer.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,138 @@
+/**
+* Copyright (c) 2005-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:
+*
+*/
+
+
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+
+#ifndef CNTSERVER_H
+#define CNTSERVER_H
+
+
+#include <e32base.h>
+#include <e32hashtab.h> // For RHashMap
+#include "CCntMsgHandlerFptr.h"
+
+
+class CCntDbManagerController;
+class CCntPackager;
+class CCntServerCurrentItemMap;
+
+
+const TInt KContactsServerPriority = 0;
+
+const TUint KLockSrvMajorVersionNumber=1;
+const TUint KLockSrvMinorVersionNumber=0;
+const TUint KLockSrvBuildVersionNumber=0;
+
+const TUint KLockSrvServerThreadHeapSize=0x2000;
+const TUint KLockSrvServerMaxThreadHeapSize=0x100000;
+
+const TInt KSlot0 = 0;
+const TInt KSlot1 = 1;
+const TInt KSlot2 = 2;
+const TInt KSlot3 = 3;
+
+const TUint KCntNullConnectionId = 0;
+
+
+// Enumerations.
+enum TLockSrvClientPanics
+	{ 
+	ELockSrvPanicBadDescriptor,
+	ELockSrvPanicBadHandle,
+	ELockSrvPanicInvalidOpcode,
+	ELockSrvPanicAlreadyInitialised,
+	ELockSrvPanicNoReplyBuffer,
+	ELockSrvPanicEventDescriptor,
+	ELockSrvPanicInvalidViewIndex,
+	ELockSrvPanicMultipleSortableTextAtLengthCalls,
+	ELockSrvPanicInvalidSortableTextAtCall,
+	// 8.1 new panic codes
+	ELockSrvPanicSessionFileNameNotSet,
+	};
+
+
+enum TCntServerType
+	{
+	ETransientServer,
+	ENonTransientServer
+	};	
+
+
+// Literal constants - shared between client & server.
+_LIT(KContactsServerName, "!CntLockServer");
+_LIT(KContactsBaseFilename, "Contacts.cdb");
+
+
+class CServerShutdown : public CTimer
+	{
+public:
+	static CServerShutdown* NewL();
+	void Start();
+
+private:
+	CServerShutdown();
+	void ConstructL();
+	void RunL();
+
+private:
+	// Shut down server if no clients connected for 5 seconds.
+	enum {KServerShutdownDelay = 5000000};	
+	};
+
+
+class CCntServer : public CPolicyServer
+	{
+public:
+	static CCntServer* NewL();
+	virtual ~CCntServer();
+	CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const;
+	CCntDbManagerController& Controller();
+	CObjectCon* NewContainerL();
+	void RemoveObjectContainer(CObjectCon& aContainer);
+	void SessionClosing();
+	TInt SessionCount();
+	void CreateMessageMapL();	
+	RHashMap<TInt,MsgHandlerFptr>& MsgLut();
+
+private:
+	CCntServer();
+	void ConstructL();
+
+private:
+	CCntDbManagerController*	iController;
+	CCntPackager* 				iPackager;
+	CObjectConIx* 				iContainerIndex;
+	CServerShutdown* 			iServerShutdown;
+	TCntServerType				iServerType;
+	mutable TUint 				iNextSessionId;
+	
+    /** Message Handler Lookup table.
+    Look table maps message functions (op codes) to appropriate
+    message handler methods.
+    */	
+	RHashMap<TInt,MsgHandlerFptr> iMsgLut;
+	};
+
+
+#endif