/*
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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.wso2.siddhi.core.config;
import com.lmax.disruptor.ExceptionHandler;
import org.wso2.siddhi.core.function.Script;
import org.wso2.siddhi.core.util.ElementIdGenerator;
import org.wso2.siddhi.core.util.ThreadBarrier;
import org.wso2.siddhi.core.util.extension.holder.EternalReferencedHolder;
import org.wso2.siddhi.core.util.persistence.PersistenceService;
import org.wso2.siddhi.core.util.snapshot.SnapshotService;
import org.wso2.siddhi.core.util.statistics.StatisticsManager;
import org.wso2.siddhi.core.util.timestamp.TimestampGenerator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
/**
* Holder object for context information of {@link org.wso2.siddhi.query.api.ExecutionPlan}.
*/
public class ExecutionPlanContext {
private SiddhiContext siddhiContext = null;
private String name;
private boolean playback;
private boolean enforceOrder;
private boolean async;
private boolean statsEnabled = false;
private StatisticsManager statisticsManager = null;
private ExecutorService executorService;
private ScheduledExecutorService scheduledExecutorService;
private List<EternalReferencedHolder> eternalReferencedHolders;
private SnapshotService snapshotService;
private ThreadBarrier threadBarrier = null;
private TimestampGenerator timestampGenerator = null;
private PersistenceService persistenceService;
private ElementIdGenerator elementIdGenerator;
private Map<String, Script> scriptFunctionMap;
private ExceptionHandler<Object> disruptorExceptionHandler;
private int bufferSize;
public ExecutionPlanContext() {
this.eternalReferencedHolders = new CopyOnWriteArrayList<EternalReferencedHolder>();
this.scriptFunctionMap = new HashMap<String, Script>();
}
public SiddhiContext getSiddhiContext() {
return siddhiContext;
}
public void setSiddhiContext(SiddhiContext siddhiContext) {
this.siddhiContext = siddhiContext;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isAsync() {
return async;
}
public void setAsync(boolean async) {
this.async = async;
}
public boolean isPlayback() {
return playback;
}
public void setPlayback(boolean playback) {
this.playback = playback;
}
public boolean isEnforceOrder() {
return enforceOrder;
}
public void setEnforceOrder(boolean enforceOrder) {
this.enforceOrder = enforceOrder;
}
public boolean isStatsEnabled() {
return statsEnabled;
}
public void setStatsEnabled(boolean statsEnabled) {
this.statsEnabled = statsEnabled;
}
public StatisticsManager getStatisticsManager() {
return statisticsManager;
}
public void setStatisticsManager(StatisticsManager statisticsManager) {
this.statisticsManager = statisticsManager;
}
public ScheduledExecutorService getScheduledExecutorService() {
return scheduledExecutorService;
}
public void setScheduledExecutorService(ScheduledExecutorService scheduledExecutorService) {
this.scheduledExecutorService = scheduledExecutorService;
}
public void addEternalReferencedHolder(EternalReferencedHolder eternalReferencedHolder) {
eternalReferencedHolders.add(eternalReferencedHolder);
}
public List<EternalReferencedHolder> getEternalReferencedHolders() {
return eternalReferencedHolders;
}
public ThreadBarrier getThreadBarrier() {
return threadBarrier;
}
public void setThreadBarrier(ThreadBarrier threadBarrier) {
this.threadBarrier = threadBarrier;
}
public ExecutorService getExecutorService() {
return executorService;
}
public void setExecutorService(ExecutorService executorService) {
this.executorService = executorService;
}
public TimestampGenerator getTimestampGenerator() {
return timestampGenerator;
}
public void setTimestampGenerator(TimestampGenerator timestampGenerator) {
this.timestampGenerator = timestampGenerator;
}
public SnapshotService getSnapshotService() {
return snapshotService;
}
public void setSnapshotService(SnapshotService snapshotService) {
this.snapshotService = snapshotService;
}
public PersistenceService getPersistenceService() {
return persistenceService;
}
public void setPersistenceService(PersistenceService persistenceService) {
this.persistenceService = persistenceService;
}
public ElementIdGenerator getElementIdGenerator() {
return elementIdGenerator;
}
public void setElementIdGenerator(ElementIdGenerator elementIdGenerator) {
this.elementIdGenerator = elementIdGenerator;
}
public Script getScript(String name) {
return scriptFunctionMap.get(name);
}
public boolean isFunctionExist(String name) {
return scriptFunctionMap.get(name) != null;
}
public Map<String, Script> getScriptFunctionMap() {
return scriptFunctionMap;
}
public ExceptionHandler<Object> getDisruptorExceptionHandler() {
if (disruptorExceptionHandler != null) {
return disruptorExceptionHandler;
} else {
return siddhiContext.getDefaultDisrupterExceptionHandler();
}
}
public void setDisruptorExceptionHandler(ExceptionHandler<Object> disruptorExceptionHandler) {
this.disruptorExceptionHandler = disruptorExceptionHandler;
}
public int getBufferSize() {
return bufferSize;
}
public void setBufferSize(int bufferSize) {
this.bufferSize = bufferSize;
}
}