email/imap4mtm/imaputils/inc/cimapobservabletimer.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imap4mtm/imaputils/inc/cimapobservabletimer.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,67 @@
+// Copyright (c) 2006-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:
+// A reusable timer class together with an observer interface
+// 
+//
+
+#ifndef __CIMAPOBSERVABLETIMER_H__
+#define __CIMAPOBSERVABLETIMER_H__
+
+#include <e32base.h>
+
+// Forward declaration
+class CImapObservableTimer;
+
+/**
+To use CImapObservableTimer, an object must implement this interface, which informs the user
+of the timer when a requested timer event has occurred.
+@internalTechnology
+@prototype
+*/
+class MImapTimerObserver
+	{
+public:
+	/**
+	The implementaton of this method will be called when a requested timer event occurs.
+	Use the CTimer base class methods to request a timer event.
+	@param aSourceTimer	A reference to the timer object that called this method.  This makes it helps an implementation 
+						of MImapTimerObserver to use more than one CObserveableTimer at once, as the implementaiton will know 
+						which of its CImapObservableTimer objects called this methiod.
+	*/
+	virtual void OnTimerL(const CImapObservableTimer& aSourceTimer) =0;
+	};
+	
+/**
+A timer object that invokes the supplied observer's OnTimer() method whenever a requested timer event occurs.
+Use the CTimer base class methods to request and cancel timer events.
+@internalTechnology
+@prototype
+*/
+class CImapObservableTimer : public CTimer
+	{
+public:
+	IMPORT_C static CImapObservableTimer* NewL(MImapTimerObserver& aObserver);
+
+private:
+	CImapObservableTimer(MImapTimerObserver& aObserver);
+
+private:	
+	// CTimer implementation
+	void RunL();
+
+private:
+	MImapTimerObserver& iObserver;
+	};
+
+#endif // __CIMAPOBSERVABLETIMER_H__