diff -r e8e63152f320 -r 2a9601315dfc javaextensions/midppush/pushregistryplugin/src/pushtimercontainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/midppush/pushregistryplugin/src/pushtimercontainer.cpp Mon May 03 12:27:20 2010 +0300 @@ -0,0 +1,180 @@ +/* +* Copyright (c) 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: +* +*/ + +#include "pushtimercontainer.h" +//#include "timerserverinterface.h" +#include "pushtimerutils.h" + +using namespace java::push; +using namespace java::captain; +using namespace java::util; + +/** + * + */ +PushTimerContainer::PushTimerContainer(TimerServerInterface& aTimerServer, + PushTimerListener& aListener) + : mTimerServer(aTimerServer),mListener(aListener) +{ + JELOG2(EJavaPush); +} + +/** + * + */ +PushTimerContainer::~PushTimerContainer() +{ + JELOG2(EJavaPush); + mTimerList.clear(); +} + +/** + * + */ +void PushTimerContainer::setAlarmTimers(std::list& aList) +{ + JELOG2(EJavaPush); + + std::list::iterator iter; + for (iter = aList.begin(); iter != aList.end(); ++iter) + { + try + { + JavaTime timeObj(iter->getTime()); + if (iter->validateAlarmTime()) + { + bool timerExpired = PushTimerUtils::isTimerExpired + (mListener,iter->getUid(),timeObj,mTimerServer); + if (true == timerExpired) + continue; + } + int timerId = mTimerServer.timerCreateJavaTime(timeObj,this); + if (0 == timerId) + { + ELOG(EJavaPush,"ERROR!!! Setting a timer failed"); + continue; + } + TimerData dataObj(iter->getUid(),timeObj,timerId); + mTimerList.push_back(dataObj); + } + catch (ExceptionBase& ex) + { + ELOG1(EJavaPush, + "ERROR!!! Exception in PushTimerContainer::setAlarmTimers() operation: %s", + ex.toString().c_str()); + } + }//end for +} + +/** + * + */ +long long PushTimerContainer::getAlarmTime(const java::util::Uid& aUid) +{ + JELOG2(EJavaPush); + + for (TimerListIter_t iter = mTimerList.begin(); iter != mTimerList.end(); ++iter) + { + if (iter->mUid == aUid) + return iter->mTime.getTime(); + } + return 0LL; +} + +/** + * + */ +void PushTimerContainer::cancelAlarm(const java::util::Uid& aUid) +{ + JELOG2(EJavaPush); + + for (TimerListIter_t iter = mTimerList.begin(); iter != mTimerList.end(); ++iter) + { + if (iter->mUid == aUid) + { + mTimerServer.timerCancel(iter->mTimerId); + mTimerList.erase(iter); + break; + } + }//end for +} + +/** + * + */ +void PushTimerContainer::timerTimeout(const int& aTimerId) +{ + JELOG2(EJavaPush); + + for (TimerListIter_t iter = mTimerList.begin(); iter != mTimerList.end(); ++iter) + { + if (iter->mTimerId == aTimerId) + { + //We are not here interesting about return value of isTimerExpired() operation. + PushTimerUtils::isTimerExpired(mListener,iter->mUid,iter->mTime,mTimerServer); + mTimerList.erase(iter); + break; + } + }//end for +} + +/** + * + */ +long long PushTimerContainer::getCurrentTime() +{ + JavaTime currentTime; + mTimerServer.getCurrentJavaTime(currentTime); + return currentTime.getTime(); +} + +/** + * + */ +TimerServerInterface& PushTimerContainer::getTimerServerInterface() const +{ + return mTimerServer; +} + +/** + * IMPLEMENTATION OF TimerData CLASS. + */ + +TimerData::TimerData(const java::util::Uid& aUid, + const JavaTime& aTime, + int aTimerId) + :mUid(aUid),mTime(aTime),mTimerId(aTimerId) +{ +} + +TimerData::~TimerData() +{ +} + +TimerData::TimerData(const TimerData& aData) +{ + *this = aData; +} + +TimerData& TimerData::operator=(const TimerData& aData) +{ + mUid = aData.mUid; + mTime = aData.mTime; + mTimerId = aData.mTimerId; + return *this; +} +