view src/alice/test/dpp/codesegment/fork/ForkStateTakeCodeSegment.java @ 26:80023cb92594 draft

add some CodeSegment. ForkStateTake, CheckForkOwnerCodeSegment, TakeForkManager
author one
date Tue, 11 Dec 2012 16:07:41 +0900
parents
children d45de183af46
line wrap: on
line source

package alice.test.dpp.codesegment.fork;

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

public class ForkStateTakeCodeSegment extends CodeSegment {

	Receiver arg1 = ids.create(CommandType.TAKE);
	Receiver arg2 = ids.create(CommandType.TAKE);

	public ForkStateTakeCodeSegment(String pName, String forkName) {
		arg1.setKey(pName);
		arg2.setKey(forkName);
	}
	
	@Override
	public void run() {
		Philosophy phil = arg1.asClass(Philosophy.class);
		Fork fork = arg2.asClass(Fork.class);
		fork.takeFork(phil.getName());
		new CheckForkOwnerCodeSegment(phil.getName(), fork.getForkName());
		ods.update("local", phil.getName(), phil);
		ods.update("local", fork.getForkName(), fork);
	}
}