sysstatemgmt/systemstatemgr/cmn/inc/ssmstatemonitor.h
changeset 76 cb32bcc88bad
parent 0 4e1aa6a622a0
--- a/sysstatemgmt/systemstatemgr/cmn/inc/ssmstatemonitor.h	Wed Sep 29 15:13:21 2010 +0300
+++ b/sysstatemgmt/systemstatemgr/cmn/inc/ssmstatemonitor.h	Fri Oct 08 14:33:25 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2007-2010 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"
@@ -48,5 +48,44 @@
 	TSsmState iState;
 	};
 
+/**
+This active object will, once activated, repeatedly attempt to defer
+a transition deadline.
+It will stop once an attempt to defer fails eg. because deferral
+was cancelled or the transition was acknowledged or the deferral limit was reached.
+@internalComponent
+@released
+*/
+NONSHARABLE_CLASS(CSsmDeferralMonitor) : public CActive
+    {
+public:
+    CSsmDeferralMonitor(RSsmStateAwareSession& aStateAwareSession, CSsmStateAwareSession2& aOwnerActiveObject);
+    ~CSsmDeferralMonitor();
+
+    /**
+    Request deadline deferral for the last transition
+    notification
+    */
+    void DeferNotification();
+    void NotifyOfAcknowledgement();
+
+protected:
+    /**
+    Re-call DeferNotification(), unless the previous
+    call completed with an error.
+    */
+    void RunL();
+
+    /**
+    Handle errors thrown from RunL() - call HandleDeferralErrror()    
+    */
+    TInt RunError(TInt aError);
+    void DoCancel();
+private:
+    RSsmStateAwareSession& iSsmStateAwareSession;
+    CSsmStateAwareSession2& iOwnerActiveObject;
+    TBool iCeaseDeferral;
+    };
+
 #endif