Canceling m-block timeouts

Is it possible to cancel a one shot m-block timeout before it occurs, or
cancel a periodic timeout before a signal is generated?

I know how to cancel periodic timeouts using a received signal’s
meta-data, but I’m not sure its possible to cancel in these situations.

Thanks!
George

On Wed, Feb 27, 2008 at 02:36:14PM -0500, George N. wrote:

Is it possible to cancel a one shot m-block timeout before it occurs, or
cancel a periodic timeout before a signal is generated?

I know how to cancel periodic timeouts using a received signal’s
meta-data, but I’m not sure its possible to cancel in these situations.

Thanks!
George

Hi George,

Just use cancel_timeout.

From class mb_mblock:

/*!

  • \brief Schedule a “one shot” timeout.
  • \param abs_time the absolute time at which the timeout should fire
  • \param user_data the data passed in the %timeout message.
  • When the timeout fires, a message will be sent to the mblock.
  • The message will have port_id = %sys-port, signal = %timeout,
  • data = user_data, metadata = the handle returned from
  • schedule_one_shot_timeout, pri = MB_PRI_BEST.
  • \returns a handle that can be used in cancel_timeout, and is passed
  • as the metadata field of the generated %timeout message.
  • To cancel a pending timeout, call cancel_timeout.
    */
    pmt_t
    schedule_one_shot_timeout(const mb_time &abs_time, pmt_t user_data);

/*!

  • \brief Schedule a periodic timeout.
  • \param first_abs_time The absolute time at which the first timeout
    should fire.
  • \param delta_time The relative delay between the first and
    successive timeouts.
  • \param user_data the data passed in the %timeout message.
  • When the timeout fires, a message will be sent to the mblock, and a
  • new timeout will be scheduled for previous absolute time +
    delta_time.
  • The message will have port_id = %sys-port, signal = %timeout,
  • data = user_data, metadata = the handle returned from
  • schedule_one_shot_timeout, pri = MB_PRI_BEST.
  • \returns a handle that can be used in cancel_timeout, and is passed
  • as the metadata field of the generated %timeout message.
  • To cancel a pending timeout, call cancel_timeout.
    */
    pmt_t
    schedule_periodic_timeout(const mb_time &first_abs_time,
    const mb_time &delta_time,
    pmt_t user_data);

/*!

  • \brief Attempt to cancel a pending timeout.
  • Note that this only stops a future timeout from firing. It is
  • possible that a timeout may have already fired and enqueued a
  • %timeout message, but that that message has not yet been seen by
  • handle_message.
  • \param handle returned from schedule_one_shot_timeout or
    schedule_periodic_timeout.
    */
    void cancel_timeout(pmt_t handle);