
org.logicng.handlers.TimeoutBDDHandler Maven / Gradle / Ivy
///////////////////////////////////////////////////////////////////////////
// __ _ _ ________ //
// / / ____ ____ _(_)____/ | / / ____/ //
// / / / __ \/ __ `/ / ___/ |/ / / __ //
// / /___/ /_/ / /_/ / / /__/ /| / /_/ / //
// /_____/\____/\__, /_/\___/_/ |_/\____/ //
// /____/ //
// //
// The Next Generation Logic Library //
// //
///////////////////////////////////////////////////////////////////////////
// //
// Copyright 2015-20xx Christoph Zengler //
// //
// Licensed under the Apache License, Version 2.0 (the "License"); //
// you may not use this file except in compliance with the License. //
// You may obtain a copy of the License at //
// //
// http://www.apache.org/licenses/LICENSE-2.0 //
// //
// Unless required by applicable law or agreed to in writing, software //
// distributed under the License is distributed on an "AS IS" BASIS, //
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or //
// implied. See the License for the specific language governing //
// permissions and limitations under the License. //
// //
///////////////////////////////////////////////////////////////////////////
package org.logicng.handlers;
/**
* A BDD handler which cancels the build process after a given timeout.
* @version 2.1.0
* @since 1.6.2
*/
public class TimeoutBDDHandler extends TimeoutHandler implements BDDHandler {
/**
* Constructs a new timeout handler with a given timeout and a timeout type. The interpretation of the timeout depends on the timeout type:
*
* - {@link TimerType#SINGLE_TIMEOUT}: The timeout is started when {@link Handler#started()} is called.
* Further calls to {@link Handler#started()} have no effect on the timeout. Thus, the timeout can only be started once.
* - {@link TimerType#RESTARTING_TIMEOUT}: The timeout is restarted when {@link Handler#started()} is called.
* - {@link TimerType#FIXED_END}: Timeout which is interpreted as fixed point in time (in milliseconds)
* at which the computation should be aborted. The method {@link Handler#started()} must still be called,
* but does not have an effect on the timeout.
*
* Note that it might take a few milliseconds more until the build process is actually canceled, since the
* handler depends on the BDD factory's call to {@link org.logicng.knowledgecompilation.bdds.jbuddy.BDDKernel#addRef(int, BDDHandler)}.
* @param timeout the timeout in milliseconds, its meaning is defined by the timeout type
* @param type the type of the timer, must not be {@code null}
*/
public TimeoutBDDHandler(final long timeout, final TimerType type) {
super(timeout, type);
}
/**
* Constructs a new timeout handler with a given timeout and uses the timeout type {@link TimerType#SINGLE_TIMEOUT}.
* Thus, the timeout is started when {@link Handler#started()} is called and further calls to {@link Handler#started()} have no effect on the timeout.
* @param timeout the timeout in milliseconds
*/
public TimeoutBDDHandler(final long timeout) {
super(timeout);
}
@Override
public boolean newRefAdded() {
return !timeLimitExceeded();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy