// Copyright (c) 2008-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 __ASSRVSYSTEMSTATE_H__#define __ASSRVSYSTEMSTATE_H__#include <ssm/ssmstateawaresession.h>#include <e32property.h>#include "assrvsystemstateobserver.h"class CASSrvAlarmQueue;/** A class to listen to changes in system state, such as shutdown events.Observers can request notification of these events so that they can handle them.*/class CASSrvSystemState : public CActive {public: static CASSrvSystemState* NewL(); ~CASSrvSystemState(); void RequestNotificationL(MASSrvSystemStateObserver& aObserver); void RequestNotificationCancel(MASSrvSystemStateObserver& aObserver);private: CASSrvSystemState(); void ConstructL(); TBool GetState(MASSrvSystemStateObserver::TState& aState); void AcknowledgeAndRequestStateNotification();private: // from CActive void RunL(); void DoCancel();private: RSsmStateAwareSession iStateAwareSession; RPointerArray<MASSrvSystemStateObserver> iObservers; RProperty iWorkAroundProperty; RProperty iAcknowledgement; TBool iWorkAround; };#endif