/* * Copyright 2014-2016 Red Hat, Inc, and individual contributors. * * 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.projectodd.wunderboss.ec; import org.projectodd.wunderboss.WunderBoss; import org.slf4j.Logger; public interface DaemonContext extends ExecutionContext { ErrorCallback DEFAULT_ERROR_CALLBACK = new ErrorCallback() { @Override public void notify(String name, Throwable t) { LOG.error("Daemon " + name + " threw an unhandled exception", t); } }; Logger LOG = WunderBoss.logger("org.projectodd.wunderboss.ec"); class CreateOption extends ExecutionContext.CreateOption { /** * The amount of time a daemon context will wait for its thread to exit, in millis. */ public static final CreateOption STOP_TIMEOUT = opt("stop_timeout", 30000L, CreateOption.class); } boolean isStarted(); void setStopCallback(StopCallback c); void setErrorCallback(ErrorCallback c); interface StopCallback { void notify(String name); } interface ErrorCallback { void notify(String name, Throwable t); } }