--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/dm/callbackServer/inc/nsmldmcallbackserver.h Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,419 @@
+/*
+* Copyright (c) 2005 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: DM callback server header file
+*
+*/
+
+
+
+#ifndef __NSMLDMCALLBACKSERVER_H__
+#define __NSMLDMCALLBACKSERVER_H__
+
+// ---------------------------------------------------------------------------
+// Includes
+// ---------------------------------------------------------------------------
+#include <e32base.h>
+#include <badesca.h>
+#include <e32property.h>
+
+#include "nsmldmcallbackserverdefs.h"
+
+// ---------------------------------------------------------------------------
+// Panic reasons
+// ---------------------------------------------------------------------------
+
+enum TNSmlDmCallbackServerPanic
+ {
+ ECleanupCreateError,
+ EMainSchedulerError
+ };
+
+// ---------------------------------------------------------------------------
+// Class forwards
+// ---------------------------------------------------------------------------
+class CNSmlDmDbHandler;
+struct TSmlDmMappingInfo;
+
+// ---------------------------------------------------------------------------
+// class CNSmlDmCallbackServer
+// ---------------------------------------------------------------------------
+/**
+* CNSmlDmCallbackServer is a Symbian OS server which owns the tree db handler
+* i.e. the tree db can be accessed only via IPC through this server.
+*
+* @since
+*/
+class CNSmlDmCallbackServer : public CServer2
+ {
+public:
+
+ /**
+ * Panics the server
+ * @param aPanic Panic code
+ */
+ static void PanicServer( TNSmlDmCallbackServerPanic aPanic );
+
+ /**
+ * Launches server thread
+ * @param aStarted Semaphore which is signallede when server
+ * is started
+ */
+ static TInt ThreadFunction( TAny* aStarted );
+
+ /**
+ * Increase session count
+ */
+ void Increase();
+
+ /**
+ * Decrease session count
+ */
+ void Decrease();
+
+ /**
+ * Return session count
+ * @return Session count
+ */
+ TInt Count();
+
+ /**
+ * Return pointer to db handler class
+ * @return Pointer to db handler
+ */
+ CNSmlDmDbHandler* DbHandler();
+
+ /**
+ * Two-phased constructor
+ * @return Pointer to newly created module instance
+ */
+ static CNSmlDmCallbackServer* NewL();
+
+ /**
+ * Destructor
+ */
+ virtual ~CNSmlDmCallbackServer();
+
+public:
+ /**
+ * Creates new session
+ * @param aVersion Version for checking
+ * @param aMessage IPC message
+ */
+ CSession2* NewSessionL( const TVersion& aVersion,
+ const RMessage2& aMessage ) const;
+
+
+private:
+ /**
+ * Constructor
+ */
+ CNSmlDmCallbackServer();
+
+ /**
+ * Second phase constructor
+ */
+ void ConstructL();
+
+
+private:
+ /**
+ * Pointer to Dbhandler class
+ */
+ CNSmlDmDbHandler* iDbHandler;
+
+ /**
+ * Session count
+ */
+ TInt iCount;
+ };
+
+// ---------------------------------------------------------------------------
+// class CNSmlDmCallbackSession
+// ---------------------------------------------------------------------------
+/**
+* CNSmlDmCallbackSession is a Symbian OS server side session class which
+* handles the messages from one client
+*
+* @since
+*/
+class CNSmlDmCallbackSession : public CSession2
+ {
+public:
+ /**
+ * Two-phased constructor
+ * @param aServer Pointer to server (owner)
+ * @return Pointer to newly created module instance
+ */
+ static CNSmlDmCallbackSession* NewL( CNSmlDmCallbackServer& aServer);
+
+ /**
+ Handles the servicing of a client request that has been passed
+ to the server.
+
+ @param aMessage The message containing the details of the client request.
+ */
+ void ServiceL( const RMessage2 &aMessage );
+
+private:
+
+ /**
+ * Called and TRAPped in ServiceL function. Directed to correct opertaion
+ * by aMessage.Function() information
+
+ @param aMessage The message containing the details of the client
+ * request.
+ */
+ void DispatchMessageL( const RMessage2 &aMessage );
+
+ /**
+ * SetServer IPC called. Sets the current server id into to db handler
+
+ @param aMessage The message containing the details of the client
+ * request.
+ */
+ void SetServerL( const RMessage2& aMessage );
+
+ /**
+ * Get Luid IPC called.Gets luid from Db handler
+
+ @param aMessage The message containing the details of the client
+ * request.
+ */
+ void GetLuidL( const RMessage2& aMessage );
+
+ /**
+ * Get Uri segment list IPC called. Gives list to the client
+
+ @param aMessage The message containing the details of the client
+ * request.
+ */
+ void GetUriSegListL( const RMessage2& aMessage );
+
+ /**
+ * Close connection IPC called. Closes connection and decreases session
+ * count. If Count is 0, server terminates itself.
+
+ @param aMessage The message containing the details of the client
+ * request.
+ */
+ void CloseConnectionL( const RMessage2& aMessage );
+
+ /**
+ * Generate luid IPC called. Gets the luid from db handler and return
+ * the length to client
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void GenerateLuidL(const RMessage2& aMessage );
+
+ /**
+ * Generate luidlist IPC called. Gets the list from db handler and makes
+ * it flat adn returns the length to client
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void GenerateUriSegListL(const RMessage2& aMessage );
+
+ /**
+ * Add mapping IPC called. Adds mappping by calling db handler
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void AddMappingInfoL( const RMessage2& aMessage );
+
+ /**
+ * Remove mapping IPC called. Removes mapping by alling db handler
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void RemoveMappingInfoL( const RMessage2& aMessage );
+
+ /**
+ * Rename mapping IPC called. Renames mapping by calling db handler
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void RenameMappingInfoL( const RMessage2& aMessage );
+
+ /**
+ * Update mapping IPC called. Updates mapping by calling db handler
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void UpdateMappingInfoL(const RMessage2& aMessage );
+
+ /**
+ * Delete ACL IPC called. Deletes correct ACL info by calling db handler
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void DeleteAclL(const RMessage2& aMessage );
+
+ /**
+ * Update ACL IPC called. Updates correct ACL info by calling db handler
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void UpdateAclL(const RMessage2& aMessage );
+
+ /**
+ * Get ACL length IPC called. Gets correct ACL info by calling db handler
+ * and return the length to client
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void GetAclLengthL(const RMessage2& aMessage );
+
+ /**
+ * Get ACL IPC called. Returns the correct ACL info to client
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void GetAclL(const RMessage2& aMessage );
+
+ /**
+ * Check ACL IPC called. Checks the asked ACL rights
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void CheckAclL(const RMessage2& aMessage );
+
+ /**
+ * Default ACLs to server IPC called. Sets the deafult acls to server
+ * by calling db handler
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void DefaultAclsToServerL(const RMessage2& aMessage );
+
+
+ /**
+ * Default ACLs to children IPC called. Sets the deafult acls to children
+ * which does not contain the earlier set acls.
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void DefaultAclsToChildrenL(const RMessage2& aMessage);
+
+ /**
+ * Erase server id IPC called. Erases references to current server id
+ * by calling db handler
+
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void EraseServerIdL(const RMessage2& aMessage );
+
+ /**
+ * Atomic start indication
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void StartAtomic(const RMessage2& aMessage );
+
+ /**
+ * Commands inside the atomic committed
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void CommitAtomicL(const RMessage2& aMessage );
+
+ /**
+ * Commads inside atomic rolled back
+ @param aMessage The message containing the details of the client
+ *request.
+ */
+ void RollbackAtomic(const RMessage2& aMessage );
+
+private:
+
+ /**
+ * Second phase constructor
+ */
+ void ConstructL();
+
+ /**
+ * Constructor
+ */
+ CNSmlDmCallbackSession( CNSmlDmCallbackServer& aServer);
+
+ /**
+ * Destructor
+ */
+ ~CNSmlDmCallbackSession();
+
+private:
+ /**
+ * Pointer to server
+ */
+ CNSmlDmCallbackServer& iServer;
+
+ /**
+ * Flat segment list
+ */
+ CBufBase *iSegList;
+
+ /**
+ * Luid in case of getting luid
+ */
+ HBufC8* iLuid;
+
+ /**
+ * ACL info in case of getting ACL
+ */
+ CBufBase* iACL;
+
+ /**
+ * ACL URI in case of getting ACL
+ */
+ HBufC8* iACLUri;
+
+ /**
+ * Uri segment list in list format
+ */
+ CArrayFixFlat <TSmlDmMappingInfo>* iUriSegList;
+
+ /**
+ * List of acl uris in case of atomic
+ */
+ RPointerArray<HBufC8> iAtomicAclURIs;
+
+ /**
+ * List of acl values in case of atomic
+ */
+ RPointerArray<HBufC8> iAtomicAcls;
+
+ /**
+ * True when atomic operation is going on
+ */
+ TBool iAtomic;
+ };
+
+
+TInt LaunchServer();
+
+#endif // __NSMLDMCALLBACKSERVER_H__