logDetail( "Publish delay timer started for " + _asset_id
if ( _logger.isDetailEnabled() ) _logger.detail( "Publish delay timer started for " + _asset_id
    void startPublishDelayTimer( )            throws BelievabilityException    {        // If there is an outstanding delay alarm, then we do        // nothing.         //        if (( _delay_alarm != null )            && ( ! _delay_alarm.hasExpired() ))            return;        // Note that we *always* want to wait the publish delay time,        // even if an existing latency timer will expire sooner.  The        // idea is that the publish delay should be very short (less        // than a second) and that its purpose is to make sure        // simultaneous and near-simultaneous events get grouped        // together into the same belief update. The same goes for        // any existing publication alarm.        //        cancelAlarm( _latency_alarm );        _latency_alarm = null;        cancelAlarm( _publish_alarm );        _publish_alarm = null;        _delay_alarm = new IntervalAlarm                ( _model_manager.getPublishDelayInterval(),                   _alarm_handler,                  this );                _alarm_handler.addAlarm( _delay_alarm );        logDetail( "Publish delay timer started for " + _asset_id                   + ". Alarm:" + _delay_alarm.toString() );    } // method startPublishDelayTimer