| 370 | namespace { |
| 371 | |
| 372 | void cancel_dispatch_common(OpenDDS::DCPS::DispatchService& dispatcher) |
| 373 | { |
| 374 | SimpleTestObj test_obj_1; |
| 375 | SimpleTestObj test_obj_2; |
| 376 | |
| 377 | const OpenDDS::DCPS::MonotonicTimePoint now = OpenDDS::DCPS::MonotonicTimePoint::now(); |
| 378 | |
| 379 | dispatcher.schedule(test_obj_1, now + OpenDDS::DCPS::TimeDuration::from_double(0.09)); |
| 380 | dispatcher.schedule(test_obj_1, now + OpenDDS::DCPS::TimeDuration::from_double(0.05)); |
| 381 | dispatcher.schedule(test_obj_1, now + OpenDDS::DCPS::TimeDuration::from_double(0.08)); |
| 382 | dispatcher.schedule(test_obj_2, now + OpenDDS::DCPS::TimeDuration::from_double(0.07)); |
| 383 | dispatcher.schedule(test_obj_2, now + OpenDDS::DCPS::TimeDuration::from_double(0.06)); |
| 384 | dispatcher.schedule(test_obj_2, now + OpenDDS::DCPS::TimeDuration::from_double(0.04)); |
| 385 | |
| 386 | EXPECT_EQ(dispatcher.cancel(test_obj_1), 3u); |
| 387 | EXPECT_EQ(dispatcher.cancel(test_obj_2), 3u); |
| 388 | |
| 389 | long t1 = dispatcher.schedule(test_obj_1, now + OpenDDS::DCPS::TimeDuration::from_double(0.09)); |
| 390 | long t2 = dispatcher.schedule(test_obj_1, now + OpenDDS::DCPS::TimeDuration::from_double(0.05)); |
| 391 | long t3 = dispatcher.schedule(test_obj_1, now + OpenDDS::DCPS::TimeDuration::from_double(0.08)); |
| 392 | /*long t4 =*/ dispatcher.schedule(test_obj_1, now + OpenDDS::DCPS::TimeDuration::from_double(0.07)); |
| 393 | /*long t5 =*/ dispatcher.schedule(test_obj_1, now + OpenDDS::DCPS::TimeDuration::from_double(0.06)); |
| 394 | long t6 = dispatcher.schedule(test_obj_1, now + OpenDDS::DCPS::TimeDuration::from_double(0.04)); |
| 395 | |
| 396 | EXPECT_EQ(dispatcher.cancel(t6), 1u); |
| 397 | EXPECT_EQ(dispatcher.cancel(t1), 1u); |
| 398 | EXPECT_EQ(dispatcher.cancel(t2), 1u); |
| 399 | void* arg = 0; |
| 400 | EXPECT_EQ(dispatcher.cancel(t3, &arg), 1u); |
| 401 | EXPECT_EQ(arg, &test_obj_1); |
| 402 | |
| 403 | EXPECT_EQ(dispatcher.cancel(-1), 0u); |
| 404 | |
| 405 | test_obj_1.wait(2u); |
| 406 | const OpenDDS::DCPS::MonotonicTimePoint after2 = OpenDDS::DCPS::MonotonicTimePoint::now(); |
| 407 | |
| 408 | EXPECT_GE(after2, now + OpenDDS::DCPS::TimeDuration::from_double(0.07)); |
| 409 | EXPECT_EQ(test_obj_1.call_count(), 2u); |
| 410 | } |
| 411 | |
| 412 | } |
| 413 |
no test coverage detected