summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2007-08-28 14:50:28 +0200
committerBenoit Foucher <benoit@zeroc.com>2007-08-28 14:50:28 +0200
commit624d8ebe9e884cd3f4bdca4dde2f52582c0e0429 (patch)
treec0c2ca846f2acfee09db083370d5444a840f6e07 /cpp
parentMerge branch 'master' of ssh://cvs.zeroc.com/home/git/ice (diff)
downloadice-624d8ebe9e884cd3f4bdca4dde2f52582c0e0429.tar.bz2
ice-624d8ebe9e884cd3f4bdca4dde2f52582c0e0429.tar.xz
ice-624d8ebe9e884cd3f4bdca4dde2f52582c0e0429.zip
Win32 fixes for IceUtil::Timer
Diffstat (limited to 'cpp')
-rw-r--r--cpp/include/IceUtil/Timer.h4
-rwxr-xr-x[-rw-r--r--]cpp/src/IceUtil/Timer.cpp4
-rw-r--r--cpp/test/IceUtil/timer/Client.cpp15
3 files changed, 13 insertions, 10 deletions
diff --git a/cpp/include/IceUtil/Timer.h b/cpp/include/IceUtil/Timer.h
index da5cb38054f..347b3bf464e 100644
--- a/cpp/include/IceUtil/Timer.h
+++ b/cpp/include/IceUtil/Timer.h
@@ -28,7 +28,7 @@ typedef IceUtil::Handle<Timer> TimerPtr;
// Extend the TimerTask class and override the run() method to execute
// code at a specific time or repeatedly.
//
-class TimerTask : public IceUtil::Shared
+class ICE_UTIL_API TimerTask : public IceUtil::Shared
{
public:
@@ -45,7 +45,7 @@ typedef IceUtil::Handle<TimerTask> TimerTaskPtr;
// repeated execution. Tasks are executed by the dedicated timer thread
// sequentially.
//
-class Timer : public virtual IceUtil::Shared, private virtual IceUtil::Thread
+class ICE_UTIL_API Timer : public virtual IceUtil::Shared, private virtual IceUtil::Thread
{
public:
diff --git a/cpp/src/IceUtil/Timer.cpp b/cpp/src/IceUtil/Timer.cpp
index d44534a82cd..9b3d7b0c852 100644..100755
--- a/cpp/src/IceUtil/Timer.cpp
+++ b/cpp/src/IceUtil/Timer.cpp
@@ -100,16 +100,16 @@ Timer::cancel(const TimerTaskPtr& task)
{
return false;
}
- _tasks.erase(p);
#if defined(_MSC_VER) && (_MSC_VER < 1300)
Token token;
token.scheduledTime = p->second;
- token.task = task = p->first;
+ token.task = p->first;
#else
Token token = { p->second, IceUtil::Time(), p->first };
#endif
_tokens.erase(token);
+ _tasks.erase(p);
return true;
}
diff --git a/cpp/test/IceUtil/timer/Client.cpp b/cpp/test/IceUtil/timer/Client.cpp
index 013e33277e1..39747aff8ba 100644
--- a/cpp/test/IceUtil/timer/Client.cpp
+++ b/cpp/test/IceUtil/timer/Client.cpp
@@ -19,11 +19,11 @@ class TestTask : public IceUtil::TimerTask, IceUtil::Monitor<IceUtil::Mutex>
{
public:
- TestTask()
+ TestTask() : _count(0)
{
}
- TestTask(const IceUtil::Time& scheduledTime) : _scheduledTime(scheduledTime)
+ TestTask(const IceUtil::Time& scheduledTime) : _scheduledTime(scheduledTime), _count(0)
{
}
@@ -123,12 +123,13 @@ int main(int argc, char* argv[])
random_shuffle(tasks.begin(), tasks.end());
- for(vector<TestTaskPtr>::const_iterator p = tasks.begin(); p != tasks.end(); ++p)
+ vector<TestTaskPtr>::const_iterator p;
+ for(p = tasks.begin(); p != tasks.end(); ++p)
{
timer->schedule(*p, (*p)->getScheduledTime());
}
- for(vector<TestTaskPtr>::const_iterator p = tasks.begin(); p != tasks.end(); ++p)
+ for(p = tasks.begin(); p != tasks.end(); ++p)
{
(*p)->waitForRun();
}
@@ -136,7 +137,7 @@ int main(int argc, char* argv[])
test(IceUtil::Time::now() - start > IceUtil::Time::milliSeconds(99));
sort(tasks.begin(), tasks.end());
- for(vector<TestTaskPtr>::const_iterator p = tasks.begin(); p + 1 != tasks.end(); ++p)
+ for(p = tasks.begin(); p + 1 != tasks.end(); ++p)
{
if((*p)->getRunTime() > (*(p + 1))->getRunTime())
{
@@ -149,7 +150,9 @@ int main(int argc, char* argv[])
TestTaskPtr task = new TestTask();
timer->scheduleRepeated(task, IceUtil::Time::milliSeconds(20));
IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(500));
- test(task->hasRun() && task->getCount() > 15 && task->getCount() < 26);
+ test(task->hasRun());
+ test(task->getCount() > 15);
+ test(task->getCount() < 26);
test(timer->cancel(task));
int count = task->getCount();
IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(100));