--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgappfw/server/inc/ccssession.h Tue Aug 31 15:11:31 2010 +0300
@@ -0,0 +1,445 @@
+/*
+ * Copyright (c) 2007 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: CS Server Client Session class
+ *
+ */
+
+#ifndef __C_CS_SESSION_H
+#define __C_CS_SESSION_H
+
+// FORWARD DECLARATIONS
+class CCsServer;
+class CCsPluginInterface;
+class CCsClientConversation;
+class CCsConversationEvent;
+
+// CLASS DECLARATIONS
+
+/**
+ * Represents a session (version 2) for a client thread on
+ * the server side
+ */
+class CCsSession : public CSession2
+ {
+public:
+
+ /**
+ * Two phase construction
+ *
+ * @param aServer, instance of CsServer
+ */
+ static CCsSession* NewL(CCsServer* aServer);
+
+ /**
+ * ServiceL
+ * Handles the servicing of client requests
+ * Implements CSession2 ServiceL
+ *
+ * @param aMessage RMessage reference
+ */
+ void ServiceL(const RMessage2& aMessage);
+
+ /**
+ * ServiceError
+ * Handles the leaves generated by ServiceL function
+ * Implements CSession2 ServiceError
+ *
+ * @param aMessage RMessage instance
+ * @parea, aError the error occured during the service
+ */
+ void ServiceError(
+ const RMessage2& aMessage,
+ TInt aError);
+
+ /**
+ * HandleNewConversationListEventL
+ * Handles the new conversation list event received from cache
+ * asynchronously
+ *
+ * @param aClientConversation the client conversation to be processed
+ */
+ void HandleNewConversationListEventL(
+ CCsClientConversation* aClientConversation);
+
+ /**
+ * HandleDeleteConversationListEventL
+ * Handles the delete conversation list event received from cache
+ * asynchronously
+ *
+ * @param aClientConversation the client conversation to be processed
+ */
+ void HandleDeleteConversationListEventL(
+ CCsClientConversation* aClientConversation);
+
+ /**
+ * HandleModifyConversationListEventL
+ * Handles the modify conversation modify event received from cache
+ * asynchronously
+ *
+ * @param aClientConversation the client conversation to be processed
+ */
+ void HandleModifyConversationListEventL(
+ CCsClientConversation* aClientConversation);
+
+ /**
+ * HandlePartialDeleteConversationListEvent
+ * Handles the partial delete conversation event from cache
+ */
+ void HandlePartialDeleteConversationListEvent(
+ CCsClientConversation* aClientConversation);
+
+ /**
+ * HandleNewConversationEventL
+ * Handles the new conversation event received from cache
+ * asynchronously
+ *
+ * @param aClientConversation the client conversation to be processed
+ */
+ void HandleNewConversationEventL(
+ CCsClientConversation* aClientConversation);
+
+ /**
+ * HandleDeleteConversationEventL
+ * Handles the delete conversation event received from cache
+ * asynchronously
+ *
+ * @param aClientConversation the client conversation to be processed
+ */
+ void HandleDeleteConversationEventL(
+ CCsClientConversation* aClientConversation);
+
+ /**
+ * HandleModifyConversationEventL
+ * Handles the modify conversation event received from cache
+ * asynchronously
+ *
+ * @param aClientConversation the client conversation to be processed
+ */
+ void HandleModifyConversationEventL(
+ CCsClientConversation* aClientConversation);
+
+ /**
+ * HandleChangeEventL
+ * Handle on-the-fly data changes event
+ *
+ * @param aConversation , conversation change
+ * @param aEvent, event for the change
+ */
+ void HandleChangeEventL(CCsClientConversation* aConversation,
+ TUint32 aEvent );
+
+ /**
+ * HandleRefreshConversationListL.
+ * Notify client to refresh conversation list.
+ */
+ void HandleRefreshConversationListL();
+
+ /**
+ * HandleRefreshConversationList.
+ * Notify client to refresh conversations.
+ */
+ void HandleRefreshConversationL();
+
+
+private:
+
+ /**
+ * Second phase constructor
+ */
+ void ConstructL();
+
+ /**
+ * Constructor
+ */
+ CCsSession(CCsServer* aServer);
+
+ /**
+ * Destructor
+ */
+ ~CCsSession();
+
+ /**
+ * DoServiceL
+ * Serve the client requests
+ *
+ * @param aMessage, RMessage instace
+ */
+ void DoServiceL(const RMessage2& aMessage);
+
+ /**
+ * GetConversationsL
+ * Service method to get the
+ * conversation entry list for one conversation entry ID
+ *
+ * @param aMessage RMessage instace
+ */
+ void GetConversationsL(const RMessage2& aMessage);
+
+ /**
+ * GetConversationListL
+ * Service method to get the
+ * list of recent(latest) conversation entry and
+ * list of dispalyname for all stored conversation entry ID
+ *
+ * @param aMessage RMessage instace
+ */
+ void GetConversationListL(const RMessage2& aMessage);
+
+ /**
+ * GetConversationUnreadListL
+ * Service method to get the
+ * list of recent(latest) unread conversation entry and
+ * list of dispalyname for all stored conversation entry ID
+ *
+ * @param aMessage RMessage instace
+ */
+ void GetConversationUnreadListL(const RMessage2& aMessage);
+
+ /**
+ * DeleteConversationL
+ * Service method to delete a conversation
+ *
+ * @param aMessage RMessage instace
+ */
+ void DeleteConversationL(const RMessage2& aMessage);
+
+ /**
+ * ShutdownServerL
+ * Service method to shutdown the server
+ *
+ * @param aMessage RMessage instace
+ */
+ void ShutdownServerL(const RMessage2& aMessage);
+
+ /**
+ * RequestChangeEventL
+ * Service method to request add as observer
+ * for on cache change events
+ *
+ * @param aMessage RMessage instace
+ */
+ void RequestChangeEventL(const RMessage2& aMessage);
+
+ /**
+ * RemoveChangeEventL
+ * Service method to remove as observer
+ * for on cache change events
+ *
+ * @param aMessage RMessage instace
+ */
+ void RemoveChangeEventL(const RMessage2& aMessage);
+
+ /**
+ * GetCachingStatusL
+ * Service method to request conversation server
+ * to get caching status
+ *
+ * @param aMessage RMessage instace
+ */
+ void GetCachingStatusL(const RMessage2& aMessage);
+
+ /**
+ * GetTotalUnreadCountL
+ * Gets total unread conversation entries.
+ *
+ * @param aMessage RMessage instace
+ */
+ void GetTotalUnreadCountL(const RMessage2& aMessage);
+
+ /**
+ * SetConversationListChangeObserverL
+ * Service method to request conversation server
+ * to set conversation list change observer flag
+ *
+ * @param aMessage RMessage instace
+ */
+ void SetConversationListChangeObserverL(const RMessage2& aMessage);
+
+ /**
+ * ResetConversationListChangeObserverL
+ * Service method to request conversation server
+ * to reset conversation list change observer flag
+ *
+ * @param aMessage RMessage instace
+ */
+ void ResetConversationListChangeObserverL(const RMessage2& aMessage);
+
+ /**
+ * SetConversationChangeObserverL
+ * Service method to request conversation server
+ * to set conversation change observer flag for given
+ * client conversation
+ *
+ * @param aMessage RMessage instace
+ */
+ void SetConversationChangeObserverL(const RMessage2& aMessage);
+
+ /**
+ * ResetConversationChangeObserverL
+ * Service method to request conversation server
+ * to reset conversation change observer flag for given
+ * client conversation
+ *
+ * @param aMessage RMessage instace
+ */
+ void ResetConversationChangeObserverL(const RMessage2& aMessage);
+
+ /**
+ * SetCachingStatusObserverL
+ * Service method to request conversation server
+ * to set caching status observer flag
+ *
+ * @param aMessage RMessage instace
+ */
+ void SetCachingStatusObserverL(const RMessage2& aMessage);
+
+ /**
+ * ResetCachingStatusObserverL
+ * Service method to request conversation server
+ * to reset caching status observer flag
+ *
+ * @param aMessage RMessage instance
+ */
+ void ResetCachingStatusObserverL(const RMessage2& aMessage);
+
+ /**
+ * NotifyClient
+ * Notify client for cache change event
+ *
+ * @param aConversationEvent instance of the event to be notified
+ */
+ void NotifyClient(CCsConversationEvent* aConversationEvent);
+
+ /**
+ * GetConversationIdL
+ * Get the conversation id.
+ *
+ * @param aMessage RMessage instance
+ */
+ void GetConversationIdL(const RMessage2& aMessage);
+
+ /**
+ * GetConversationIdfromAddressL
+ * Get the conversation id from address
+ *
+ * @param aMessage RMessage instance
+ */
+ void GetConversationIdfromAddressL(const RMessage2& aMessage);
+
+ void GetConversationFromConversationIdL(const RMessage2& aMessage);
+
+ /**
+ * GetConversationFromMessageIdL
+ * Get the conversation from message-id
+ *
+ * @param aMessage RMessage instance
+ */
+ void GetConversationFromMessageIdL(const RMessage2& aMessage);
+
+ /**
+ * MarkConversationReadL
+ * Service method to mark a conversation as read.
+ *
+ * @param aMessage RMessage instance
+ */
+ void MarkConversationReadL(const RMessage2& aMessage);
+
+private:
+
+ /**
+ * iServer
+ * Reference to server (not owned)
+ */
+ CCsServer* iServer;
+
+ /**
+ * Buf for doing IPC
+ * Own
+ */
+ HBufC8* iDes;
+
+ /**
+ * iEventList
+ * Temp list of cache change event
+ * Own
+ */
+ RPointerArray<CCsConversationEvent>* iEventList;
+
+ /**
+ * iMonitoredConversation
+ * Conversation monitored for changes.
+ */
+ CCsClientConversation* iMonitoredConversation;
+
+ /**
+ * iAsyncReqRMessage
+ * Store RMeessage received from clinet
+ * for cache change event notification
+ * (NotOwned)
+ */
+ RMessagePtr2 iAsyncReqRMessage;
+
+ /**
+ * iBufferOverflow
+ * boolean to make if overflow has occured
+ */
+ TBool iBufferOverflow;
+
+ /**
+ * iGetConversationBufferOverflow
+ * boolean to make if overflow has occured in API GetConversation
+ */
+ TBool iGetConversationBufferOverflow;
+
+ /**
+ * iNotifyHandling
+ * iAsyncReqRMessage is valid or not for
+ * notification handling
+ * Owned
+ */
+ TBool iNotifyHandling;
+
+ /**
+ * iConversationListChangeObserver
+ * It will true if observer
+ * registered for conversation List change event
+ * Owned
+ */
+ TBool iConversationListChangeObserver;
+
+ /**
+ * iConversationChangeObserver
+ * It will true if observer
+ * registered for conversation change observer
+ * Owned
+ */
+ TBool iConversationChangeObserver;
+
+ /**
+ * iCachingChangeObserver
+ * It will true if observer
+ * registered for caching status change observer
+ * Owned
+ */
+ TBool iCachingChangeObserver;
+
+ /**
+ * iReqCnt
+ * Maintains the count of requests which are being served
+ */
+ TInt iReqCnt;
+ };
+
+#endif // __C_CS_SESSION_H
+