diff -r 000000000000 -r b497e44ab2fc syncmlfw/dm/callbackServer/inc/nsmldmcallbackserver.h --- /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 +#include +#include + +#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 * iUriSegList; + + /** + * List of acl uris in case of atomic + */ + RPointerArray iAtomicAclURIs; + + /** + * List of acl values in case of atomic + */ + RPointerArray iAtomicAcls; + + /** + * True when atomic operation is going on + */ + TBool iAtomic; + }; + + +TInt LaunchServer(); + +#endif // __NSMLDMCALLBACKSERVER_H__