law(firstLaw,language(java)) import java.util.*; import java.io.*; public class firstLaw extends Law{ public void sent(String source, String message, String dest) { if(CS.has(source+"canSend("+source+")")){ if(message.startsWith("msg(" ) ){ //doDeliver("controller",source+"canSend("+dest+")",Self); //doDiscloseAllCS(); if( CS.has(source+"canSend("+dest+")") ){ doForward(); } else doDeliver("controller","cannot send messages "+message+" to "+dest,Self); } else if(message.startsWith("move(canSend(")){ //doDiscloseAllCS(); if(CS.has(source+"canSend("+message.substring(13,message.length()-2)+")")){ doAdd(dest+"canSend("+message.substring(13,message.length()-2)+")"); doForward(); } else doDeliver("controller","cannot send messages "+message+" to "+dest,Self); } else if (message.startsWith("grant(canSend(")){ //doDeliver("controller",message.substring(14,message.length()-2),Self); if((message.substring(14,message.length()-2).equals(source) )){ //doDiscloseAllCS(); if( CS.has(source+"canSend("+source+")") ){ doAdd(dest+"canSend("+source+")"); //doDeliver("controller",dest+"canSend("+source+")",Self); doForward(); } else doDeliver("controller","cannot send messages "+message+" to "+dest,Self); }else doDeliver("controller", "no right to grant not for yoirself!",Self); } else doDeliver ("controller", "this format is not supported!", Self); } else doDeliver("controller","specify your name on creation!!!!",Self); } //////////////////////////////////////////////////////////////////////////////////////////////////// public void arrived(String source, String message, String dest) { if(message.startsWith("msg(" ) ){ if(!CS.has(source+"canSend("+dest+")") ){ //doDeliver("controller",source+"canSend("+dest+")",Self); doAdd(source+"canSend("+dest+")"); } //doDiscloseAllCS(); doDeliver(); } else if(message.startsWith("move(canSend(")){ if(!CS.has(source+"canSend("+message.substring(13,message.length()-2)+")")){ doAdd(source+"canSend("+message.substring(13,message.length()-2)+")"); } if(!CS.has(dest+"canSend("+message.substring(13,message.length()-2)+")")){ doAdd(dest+"canSend("+message.substring(13,message.length()-2)+")"); } //doDiscloseAllCS(); doDeliver(); } else if (message.startsWith("grant(canSend(")){ if( !CS.has(source+"canSend("+source+")") ){ doAdd(source+"canSend("+source+")"); } if(! CS.has(dest+"canSend("+source+")")){ doAdd(dest+"canSend("+source+")"); } //doDiscloseAllCS(); doDeliver(); } //doDeliver(); } public void disconnected() { doQuit(); } public void adopted(String source){ //doDeliver("controller",source+"canSend("+source+")",Self); doAdd(source.substring(1,source.length()-1)+"canSend("+source.substring(1,source.length()-1)+")"); } }