diff -r f5050f1da672 -r 04becd199f91 javaextensions/midppush/pushregistryplugin/inc/pushtimercontainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/midppush/pushregistryplugin/inc/pushtimercontainer.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,151 @@ +/* +* Copyright (c) 2008 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 PUSHTIMERCONTAINER_H +#define PUSHTIMERCONTAINER_H + +#include "pushdbhandler.h" +#include "timerserverinterface.h" + +namespace java +{ +namespace util +{ +class Uid; +} + +namespace push +{ + +/** + * This interface provides callback operation which informs expiration of the timer + * for automatic launch of the application. + */ +class PushTimerListener +{ +public: + + virtual ~PushTimerListener() {} + + /** + * This callback operation is called if alarm expired for application's + * automatic launch. + * @param aUid UID of the application. + * @param aAlarmTime alarm time(= epoch time) of the MIDlet in milliseconds. + */ + virtual void timerExpired(const java::util::Uid& aUid, + const long long& aAlarmTime) = 0; + + /** + * This operation deletes alarm of the application from the db. + * This operation does not thrown any exception. + * @param aUid UID of the application. + */ + virtual void deleteAlarm(const java::util::Uid& aUid) = 0; +}; + +class TimerData +{ +public: + + TimerData(const java::util::Uid& aUid, + const java::captain::JavaTime& aTime, + int aTimerId); + + ~TimerData(); + + TimerData(const TimerData&); + + TimerData &operator=(const TimerData&); + + java::util::Uid mUid; + java::captain::JavaTime mTime; + int mTimerId; +}; + +/** + * This interface provides functionality for setting timer for automatic launch + * of the application. This interface is needed because timer implementation is + * different depending on OS system. + */ +class PushTimerContainer : public java::captain::TimerServerEventsInterface +{ +public: + + PushTimerContainer(java::captain::TimerServerInterface& aTimerServer, + PushTimerListener& aListener); + + virtual ~PushTimerContainer(); + + /** + * @param aListener Ownership of this argument is not given to the user. + */ + //void setListener(PushTimerListener* aListener); + + /** + * This operation provides alarm information. + * @param aList List of alarm times. Note: Implementation must not + * delete content of the list. + */ + void setAlarmTimers(std::list& aList); + + /** + * Returns alarm time by UID of the application. + * @param aUid UID of the application. + * @return alarm Time by UID of the application. 0 is returned if alarm time + * by UId is not found. + */ + long long getAlarmTime(const java::util::Uid& aUid); + + /** + * This operation cancels pending timer of the application. + * @param aUid UID of the application. + * @throws This operation does not throw exception. + */ + void cancelAlarm(const java::util::Uid& aUid); + + /** + * @return current time in milliseconds + * since 00:00:00 UTC (Coordinated Universal Time), January 1 1970. + */ + long long getCurrentTime(); + + java::captain::TimerServerInterface& getTimerServerInterface() const; + + //TimerServerEventsInterface + virtual void timerTimeout(const int& aTimerId); + +private: + + //Datamembers. + java::captain::TimerServerInterface& mTimerServer; + PushTimerListener& mListener; + typedef std::list TimerList_t; + typedef std::list::iterator TimerListIter_t; + TimerList_t mTimerList; + + //Not implemented. + PushTimerContainer(const PushTimerContainer &x); + PushTimerContainer &operator=(const PushTimerContainer &x); + +}; + +} //end namespace push +} //end namespace java + +#endif // PUSHTIMERCONTAINER_H