diff -r 000000000000 -r 8e480a14352b messagingfw/sendas/server/inc/csendassession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/sendas/server/inc/csendassession.h Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,94 @@ +// Copyright (c) 2004-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 __CSENDASSESSION_H__ +#define __CSENDASSESSION_H__ + +#include +#include +#include +#include +#include + +// forward declarations +class CSendAsServer; +class CSendAsMessage; +class CSendAsMtmManager; +class CSendAsAccounts; +class CSendAsActiveContainer; + +/** +Server-side session object representing a client-side session. + +SendAs messages are represented as subsessions, one per message. +Subsessions are stored in an object container index. + +@internalComponent +@released +*/ +class CSendAsSession : public CSession2 + { +public: + static CSendAsSession* NewL(const TVersion& aVersion, CSendAsServer& aServer); + virtual ~CSendAsSession(); + + CMsvSession& GetMsvSessionL(); + CSendAsActiveContainer& ActiveContainer(); + void PanicClient(const RMessage2& aMessage, TSendAsClientPanic aPanic) const; + + CBaseMtm* GetClientMtmL(TUid aMtmUid); + const TUid& NotifierUid() const; + const TUid& EditUtilsPluginUid() const; + // + void HandleMtmChange(); +private: + CSendAsSession(CSendAsServer& aServer); + void ConstructL(); + + void RemoveMessage(TUint aHandle); + CSendAsMessage* MessageFromHandle(TUint aHandle); + + // IPC servicing methods + TBool DoServiceL(const RMessage2& aMessage); + void CreateSubsessionL(const RMessage2& aMessage); + void DoSetMessageTypeFilterL(const RMessage2& aMessage); + void DoClearMessageTypeFilterL(); + void DoGetMessageTypeListLengthL(const RMessage2& aMessage); + void DoGetMessageTypeListL(const RMessage2& aMessage); + void DoGetAccountListLengthL(const RMessage2& aMessage); + void DoGetAccountListL(const RMessage2& aMessage); + + // + void AddTypeFilterL(const TSendAsMessageTypeFilter& aFilter); + void ResetTypeFilterL(); + + // from CSession2 + virtual void ServiceL(const RMessage2& aMessage); + virtual void Disconnect(const RMessage2& aMessage); +private: + TInt iMessageCount; // total num of messages created + + // session object tracking + CSendAsServer& iServer; + CObjectCon* iContainer; // object container for this session + CObjectIx* iMessages; // object index storing CSendAsMessage's for this session + + // session data + CSendAsMessageTypes* iAvailableMessageTypes; + CMsvEntry* iMsvEntry; + CSendAsAccounts* iSendAsAccounts; + }; + +#endif // __CSENDASSESSION_H__