All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.vmlens.trace.agent.bootstrap.parallize.logic.decisionLogic.ModeReplay Maven / Gradle / Ivy

There is a newer version: 1.1.5
Show newest version
package com.vmlens.trace.agent.bootstrap.parallize.logic.decisionLogic;

import com.vmlens.trace.agent.bootstrap.parallize.logicState.Decision;
import com.vmlens.trace.agent.bootstrap.parallize.logicState.DecisionQueue;
import com.vmlens.trace.agent.bootstrap.parallize.logicState.DecisionWaiting;
import com.vmlens.trace.agent.bootstrap.parallize.logicState.ThreadId2State;
import com.vmlens.trace.agent.bootstrap.parallize.operation.Operation;

public class ModeReplay implements Mode {
	
	private final DecisionQueue currentSteps;
	private final DecisionQueue startSteps;

	public ModeReplay(DecisionQueue stackNode) {
		super();
		this.currentSteps = stackNode;
		this.startSteps = stackNode.cloneQueue();
	}

	@Override
	public Decision decide(Operation operation, long threadId,
			ThreadId2State threadId2State) {
		
		return currentSteps.dequeue();
	}

	@Override
	public Mode beforeDecision() {
		
		if(currentSteps.isEmpty())
		{
			return new ModeNewDecisions(startSteps);
		}
		else
		{
			return this;
		}
		
		
		
	}

	@Override
	public DecisionWaiting decide4ThreadEnded(ThreadId2State threadId2State) {
		Decision decision = currentSteps.dequeue();
		
		if( decision instanceof DecisionWaiting )
		{
			return (DecisionWaiting) decision;
		}
		
		
		return new DecisionWaiting(0);
		
	}

	@Override
	public Decision decideBewteenKeepGoingOrWakeup(ThreadId2State threadId2State) {
		
		return currentSteps.dequeue();
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy