messagingfw/sendas/server/inc/csendasmtmmanager.h
changeset 62 db3f5fa34ec7
parent 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/sendas/server/inc/csendasmtmmanager.h	Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,71 @@
+// 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 __CSENDASMTMMANAGER_H__
+#define __CSENDASMTMMANAGER_H__
+
+#include <e32base.h>
+#include <tsendasmessagetypefilter.h>
+
+// forward declarations
+class CBaseMtm;
+class CMsvSession;
+class CClientMtmRegistry;
+class CSendAsServer;
+class CSendAsMessageTypes;
+
+/**
+This class implements most of the MTM instance management for the SendAs server 
+sessions and subsessions.
+
+The SendAs server maintains a single instance of this class, while each session
+maintains its own array of available MTMs. The SendAs server also owns a 
+CMsvSession object and inherits from MMsvSessionObserver. When notified of a message 
+server event affecting MTM availability, the sendas server updates the MTM manager 
+and each open sendas session of the change.
+
+CSendAsSession uses this class to provide a default list of MTM's available for
+sendas operations. Sessions then update their own available list based on subsequent
+RSendAs filter operations.
+
+CSendAsMessage uses this class to obtain instances of MTMs.
+
+@internalComponent
+@released
+*/ 
+class CSendAsMtmManager : public CBase
+	{
+public:
+	static CSendAsMtmManager* NewL(CSendAsServer& aServer);
+	virtual ~CSendAsMtmManager();
+	//
+	CBaseMtm* GetClientMtmL(TUid aMtmUid);
+	CBaseMtm* FindStoredMtmL(TUid aMtmUid);
+	RArray<TUid>& GetMtmUidArray();
+	CClientMtmRegistry* GetClientMtmRegistry();
+	void RefreshMtmUidArrayL();
+private:
+	CSendAsMtmManager(CSendAsServer& aServer);
+	void ConstructL();
+	//
+	void PopulateL();
+private:
+	CSendAsServer& 				iServer;
+	RArray<TUid> 				iMtmUidArray;
+	RPointerArray<CBaseMtm> 	iClientMtmArray;
+	CClientMtmRegistry* 		iClientRegistry;
+	};
+		
+#endif	// __CSENDASMTMMANAGER_H__