// Generate and return an unique request id for the current // invocation. CORBA::ULong TAO_Muxed_TMS::request_id (void) { // @@ What is a good error return value? ACE_GUARD_RETURN (ACE_Lock, ace_mon, *this->lock_, 0); ++this->request_id_generator_; // if TAO_Transport::bidirectional_flag_ // == 1 --> originating side // == 0 --> other side // == -1 --> no bi-directional connection was negotiated // The originating side must have an even request ID, and the other // side must have an odd request ID. Make sure that is the case. int const bidir_flag = this->transport_->bidirectional_flag (); if ((bidir_flag == 1 && ACE_ODD (this->request_id_generator_)) || (bidir_flag == 0 && ACE_EVEN (this->request_id_generator_))) ++this->request_id_generator_; if (TAO_debug_level > 4) TAOLIB_DEBUG ((LM_DEBUG, "TAO (%P|%t) - Muxed_TMS[%d]::request_id, <%d>\n", this->transport_->id (), this->request_id_generator_)); return this->request_id_generator_; }
// Generate and return an unique request id for the current // invocation. We can actually return a predecided ULong, since we // allow only one invocation over this connection at a time. CORBA::ULong TAO_Exclusive_TMS::request_id (void) { ++this->request_id_generator_; // if TAO_Transport::bidirectional_flag_ // == 1 --> originating side // == 0 --> other side // == -1 --> no bi-directional connection was negotiated // The originating side must have an even request ID, and the other // side must have an odd request ID. Make sure that is the case. int const bidir_flag = this->transport_->bidirectional_flag (); if ((bidir_flag == 1 && ACE_ODD (this->request_id_generator_)) || (bidir_flag == 0 && ACE_EVEN (this->request_id_generator_))) ++this->request_id_generator_; if (TAO_debug_level > 4) TAOLIB_DEBUG ((LM_DEBUG, ACE_TEXT ("TAO (%P|%t) - Exclusive_TMS::request_id - <%d>\n"), this->request_id_generator_)); return this->request_id_generator_; }
int ExitHandler::handle_timeout(const ACE_Time_Value &, const void *) { static int tick_tock = 0; ACE_DEBUG ((LM_DEBUG, "(%P|%t@%T) \"%s\" %s\n", name_, ACE_ODD (tick_tock) ? "Tock" : "Tick")); tick_tock++; return 0; }
static void test_duplicates (size_t count) { size_t duplicates = 0; size_t sets = 0; size_t clears = 0; ACE_Handle_Set handle_set; ACE_OS::srand (ACE_OS::time (0L)); for (size_t i = 0; i < count; i++) { size_t handle = ACE_static_cast (size_t, ACE_OS::rand () % ACE_Handle_Set::MAXSIZE); if (ACE_ODD (handle)) { if (handle_set.is_set ((ACE_HANDLE) handle)) duplicates++; handle_set.set_bit ((ACE_HANDLE) handle); sets++; } else { if (handle_set.is_set ((ACE_HANDLE) handle)) duplicates--; handle_set.clr_bit ((ACE_HANDLE) handle); clears++; } } ACE_ASSERT (count == sets + clears); ACE_ASSERT (handle_set.num_set () + duplicates == sets); }
static void test_canceling_odd_timers (void) { ACE_Trace t (ACE_TEXT ("test_canceling_odd_timers"), __LINE__, ACE_TEXT_CHAR_TO_TCHAR (__FILE__)); Time_Handler rt[ACE_MAX_TIMERS]; long t_id[ACE_MAX_TIMERS]; done = 0; the_count = 1; odd = 1; for (size_t i = 0; i < ACE_MAX_TIMERS; i++) { t_id[i] = ACE_Reactor::instance ()->schedule_timer (&rt[i], (const void *) i, ACE_Time_Value (2 * i + 1)); ACE_TEST_ASSERT (t_id[i] != -1); rt[i].timer_id (t_id[i]); } for (size_t j = 0; (u_long) j < ACE_MAX_TIMERS; j++) // Cancel handlers with odd numbered timer ids. if (ACE_ODD (rt[j].timer_id ())) { int result = ACE_Reactor::instance ()->cancel_timer (rt[j].timer_id ()); if (result == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("Error cancelling timer\n"))); } while (!done) ACE_Reactor::instance ()->handle_events (); }
static void test_canceling_odd_timers (void) { ACE_Trace t (ACE_TEXT ("test_canceling_odd_timers"), __LINE__, ACE_TEXT_CHAR_TO_TCHAR (__FILE__)); Time_Handler rt[ACE_MAX_TIMERS]; long t_id[ACE_MAX_TIMERS]; size_t which[ACE_MAX_TIMERS]; done = 0; counter = 1; odd = 1; size_t i = 0; long secs = 0; for ( ; i < ACE_MAX_TIMERS; i++, secs++) { which[i] = i; t_id[i] = ACE_Proactor::instance ()->schedule_timer (rt[i], &which[i], ACE_Time_Value (2 * secs + 1)); if (t_id[i] == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("schedule_timer"))); rt[i].timer_id (t_id[i]); } for (i = 0; i < ACE_MAX_TIMERS; i++) // Cancel handlers with odd numbered timer ids. if (ACE_ODD (rt[i].timer_id ())) { if (ACE_Proactor::instance ()->cancel_timer (rt[i].timer_id ()) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("cancel_timer"))); } while (!done) ACE_Proactor::instance ()->handle_events (); }