userlibandfileserver/domainmgr/inc/domainobserver.h
changeset 0 a41df078684a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/domainmgr/inc/domainobserver.h	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,107 @@
+// 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 the License "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 __DOMAIN_OBSERVER_H__
+#define __DOMAIN_OBSERVER_H__
+
+#include <e32std.h>
+
+#include <domaindefs.h>
+#include <domainmanager.h>
+
+
+/**
+@internalTechnology
+
+An interface to the domain manager for an observer.
+
+To make use of this class, an application must derive from it and implement the pure vitual functions
+to handle transition event notifications.
+*/
+class MHierarchyObserver
+	{
+public:
+	/**
+	When the observer is active, then upon any successful transition, this will be called indicating 
+	the Id of the transitioned domain and the state of the domain after the transition. Clients are 
+	expected to use this for debugging purpose.
+	*/
+	virtual void TransProgEvent(TDmDomainId aDomainId, TDmDomainState aState) = 0;
+	/**
+	When observer is active, then upon any failing transition, this will be called indicating 
+	the Id of the domain, the state of the domain for the transition and the error occured. 
+	Clients are expected to use this for debugging purpose.
+	*/
+	virtual void TransFailEvent(TDmDomainId aDomainId, TDmDomainState aState, TInt aError) = 0;
+	/**
+	When observer is active, then upon any request for transition, this will be called indicating 
+	the Id of the domain and the desired state of the domain. 
+	Clients are expected to use this for debugging purpose.
+	*/
+	virtual void TransReqEvent(TDmDomainId aDomainId, TDmDomainState aState) = 0;
+	};
+
+
+
+ 
+/**
+@internalTechnology
+
+An abstract class to allow a domain controller to interface to the domain manager.
+
+To make use of this class an application must derive from it.
+*/
+class CHierarchyObserver: public CActive
+	{
+public:
+	/**
+	@internalAll
+	*/
+	IMPORT_C static CHierarchyObserver* NewL(MHierarchyObserver& aHierarchyObserver,TDmHierarchyId aHierarchyId);
+	/**
+	@internalAll
+	*/
+	IMPORT_C ~CHierarchyObserver();
+	/**
+	@internalAll
+	*/
+	IMPORT_C TInt StartObserver(TDmDomainId aDomainId, TDmNotifyType aNotifyType);
+	/**
+	@internalAll
+	*/
+	IMPORT_C TInt StopObserver();
+	/**
+	@internalAll
+	*/
+	IMPORT_C TInt ObserverDomainCount();
+
+private:
+	CHierarchyObserver(MHierarchyObserver& aHierarchyObserver,TDmHierarchyId aHierarchyId);
+	void RunL();
+	void DoCancel();
+	void GetNotification();
+	TInt GetEvents();
+
+private:
+	RDmManagerSession iSession;
+	TDmHierarchyId iHierarchyId; 
+	MHierarchyObserver& iObserver;
+	TDmNotifyType iNotifyType;
+	TDmDomainId iDomainId;
+	TBool iObserverStarted;
+	RArray<const TTransInfo> iTransitionEvents;
+	};
+
+#endif