view src/alice/test/dpp/codesegment/philosophy2/TakeForkManagerCodeSegment.java @ 32:b4a700fd1bd8 draft default tip

move some files
author one
date Tue, 29 Jan 2013 17:33:35 +0900
parents src/alice/test/dpp/codesegment/philosophy/TakeForkManagerCodeSegment.java@d45de183af46
children
line wrap: on
line source

package alice.test.dpp.codesegment.philosophy2;

import alice.codesegment.CodeSegment;
import alice.datasegment.CommandType;
import alice.datasegment.Receiver;
import alice.test.dpp.codesegment.philosophy.EatCodeSegment;
import alice.test.dpp.datasegment.Philosophy;

public class TakeForkManagerCodeSegment extends CodeSegment {
	
	Receiver arg1 = ids.create(CommandType.TAKE);
	
	public TakeForkManagerCodeSegment(String pName) {
		arg1.setKey(pName);
	}
	
	@Override
	public void run() {
		Philosophy phil = arg1.asClass(Philosophy.class);
		if (phil.hasLeftFork && phil.hasRightFork) { 
			phil.setState(Philosophy.State.EAT);
			new EatCodeSegment(phil.getName());
		} else if (phil.hasRightFork) {
			phil.setState(Philosophy.State.TAKELEFTFORK);
			new TakeLeftForkCodeSegment(phil.getName(), phil.getLeftFork());
		} else {
			phil.setState(Philosophy.State.TAKERIGHTFORK);
			new TakeRightForkCodeSegment(phil.getName(), phil.getRightFork());
		}
		ods.update("local", phil.getName(), phil);		
	}
}