law(exim1,language(java)) portal(exim2,lawURL(http://www.moses.rutgers.edu/examples/exim/exim2.java1)) import java.util.*; import java.io.*; public class exim1 extends Law{ public void sent(String source, String message, String dest, String destlaw) { System.out.println("SENT " + destlaw); if(message.startsWith("foreign")){ String msg = getContentFromMessage(message); doForward(source,msg,dest,"exim2"); } else doForward(); } public void arrived(String source, String sourcelaw, String message, String dest) { System.out.println("ARRIVED " + sourcelaw); if(sourcelaw.equals("exim2")) doDeliver(source,"foreign("+message+","+PeerHash+")",dest); else doDeliver(); } public void disconnected() { System.out.println("DISCONNECTED"); doQuit(); } public void exception(Message m, String failurecause) { System.out.println("EXCEPTION "+m.ex_po+" "+failurecause); doDeliver("controller","exception("+failurecause+")",Self); } public String getContentFromMessage(String anyMessage) { int index = anyMessage.indexOf("("); if (index == -1) return ""; else return anyMessage.substring(index+1, anyMessage.length()-1); } }