/*******************************************************************************
* Copyright 2015 Software Evolution and Architecture Lab, University of Zurich
*
* 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 eu.cloudwave.wp5.monitoring.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import eu.cloudwave.wp5.common.dto.model.MetricContainingProcedureExecutionDto;
import eu.cloudwave.wp5.common.model.Procedure;
import eu.cloudwave.wp5.common.model.ProcedureExecution;
/**
* A extension of a {@link MetricContainingProcedureExecutionDto} that additionally allows to specify whether the
* procedure execution has already been finished. This is only used in the monitoring component (while constructing the
* call trace) and should never be transmitted to any other component.
*/
public class RunningProcedureExecution extends MetricContainingProcedureExecutionDto implements ProcedureExecution {
private boolean isFinish;
public RunningProcedureExecution(final Procedure procedure, final long startTime) {
super(procedure, startTime);
this.isFinish = false;
}
/**
* Checks whether the current {@link ProcedureExecution} is still executing or already finished.
*
* @return <code>true</code> if the current {@link ProcedureExecution} is already finished, <code>false</code>
* otherwise
*/
@JsonIgnore
public boolean isFinished() {
return isFinish;
}
/**
* Finish the execution.
*/
public void finish() {
this.isFinish = true;
}
}