messagingfw/scheduledsendmtm/schedulesendmtm/inc/ScheduleBaseServerMtm.h
changeset 22 bde600d88860
parent 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/scheduledsendmtm/schedulesendmtm/inc/ScheduleBaseServerMtm.h	Fri Jun 04 10:32:16 2010 +0100
@@ -0,0 +1,117 @@
+// Copyright (c) 1999-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 SCHEDULE_BASE_SERVER_MTM_H_
+#define SCHEDULE_BASE_SERVER_MTM_H_
+
+//
+//
+//	CScheduleBaseServerMtm Declaration
+//
+//
+
+ 
+
+#include <mtsr.h>
+#include <barsc.h>
+
+
+class CMsvScheduleSend;
+class CMsvSysAgentActions;
+class TMsvSendErrorAction;
+class TMsvSchedulePackage;
+class CRepository;
+
+class CScheduleBaseServerMtm : public CBaseServerMtm
+/**
+Base class for Server MTMs that support scheduling.
+
+It contains pure virtual functions which must be implemented by the Server 
+MTM. These functions are not required for interoperability with any other 
+classes, however they are essential functionality that must be implemented 
+by a Server MTM that support scheduling.
+
+CScheduleBaseServerMtm uses a class derived from CMsvScheduleSend to
+interface with the task scheduler.
+
+@see CMsvScheduleSend
+@publishedAll
+@released
+*/
+	{
+protected:
+
+//	--- Construction ---
+
+	IMPORT_C CScheduleBaseServerMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aServerEntry);
+
+//	--- Send the Scheduled Messages ---
+
+	IMPORT_C virtual void SendScheduledL(CMsvEntrySelection& aSelection, const TBool aMove, const TDesC8& aParameter, TRequestStatus& aStatus);
+	IMPORT_C virtual void ScheduleL(CMsvEntrySelection& aSelection, const TBool aMove, const TDesC8& aParameter, TRequestStatus& aStatus);
+	IMPORT_C virtual void ConstructL();
+	IMPORT_C void LoadResourceFileL(const TDesC& aResFileName);
+
+// Other Schedule Commands
+
+	IMPORT_C virtual void CheckScheduleL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter, TRequestStatus& aStatus);
+	IMPORT_C virtual void DeleteScheduleL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter, TRequestStatus& aStatus);
+
+//	--- Pure virtual functions that must be implemented in a derived class ---
+
+	/**
+	Populates a TMsvSchedulePackage object with scheduling information.
+	
+	@param aParameter Parameter information for the package
+	@param aMove Flag that signals whether a move or copy is required
+	@param aPackage On return, a populated object
+	*/
+	virtual void PopulateSchedulePackage(const TDesC8& aParameter, const TBool aMove, TMsvSchedulePackage& aPackage) const = 0;
+	
+	/**
+	Loads the resource file (if any) for the MTM.
+	*/
+	virtual void LoadResourceFileL() = 0;
+
+
+	IMPORT_C void Queue(TRequestStatus& aStatus);
+
+	IMPORT_C void LoadScheduleSettingsL(CRepository& aRepository, TBool aRestoreErrorsFromResource = EFalse, TInt aErrorsResourceId = 0);
+
+protected:
+
+	IMPORT_C ~CScheduleBaseServerMtm();
+
+private:
+
+	void RequestComplete(TRequestStatus* aStatus, TInt aError);
+
+protected:
+
+//	--- Data Member ---
+
+	/** Message scheduler. */
+	CMsvScheduleSend* iScheduleSend; //Should be constructed and deleted by the derived class
+
+	/** MTM resource file. */
+	RResourceFile iResourceFile;
+	/** File server handle. */
+	RFs iFs;
+	/** Asynchronous status word. */
+	TRequestStatus* iReport;
+	};
+
+#endif