package scs.demos.philosopher.servant;
import scs.demos.philosopher.ObserverPOA;
import scs.demos.philosopher.PhilosopherState;
import scs.demos.philosopher.StatusInfo;
public class ObserverServant extends ObserverPOA {
String getState( PhilosopherState st ) {
if( st == PhilosopherState.EATING ) return "EATING";
else if( st == PhilosopherState.THINKING ) return "THINKING";
else if( st == PhilosopherState.HUNGRY ) return "HUNGRY";
else if( st == PhilosopherState.STARVING) return "STARVING";
else if( st == PhilosopherState.DEAD ) return "DEAD";
return "????";
}
public void push(StatusInfo info) {
synchronized(this) {
System.out.print( info.name + "\t" + getState(info.state) + "\t" );
if( info.has_left_fork )
System.out.print(" L ");
else
System.out.print(" - ");
if( info.has_right_fork )
System.out.print(" R ");
else
System.out.print(" - ");
System.out.print( "ticks: " + info.ticks_since_last_meal );
//for( int i = 1; i <= info.ticks_since_last_meal ; i++ )
// System.out.print(".");
System.out.println("");
}
}
}