001 package toolbus.atom.msg;
002
003 import java.util.Stack;
004 import toolbus.State;
005 import toolbus.TBTermFactory;
006 import toolbus.atom.Atom;
007 import toolbus.exceptions.ToolBusException;
008 import toolbus.matching.MatchStore;
009 import toolbus.parsercup.PositionInformation;
010 import toolbus.process.ProcessExpression;
011 import toolbus.process.ProcessInstance;
012 import aterm.ATerm;
013
014 /**
015 * @author paulk, Aug 3, 2002
016 */
017 public class RecMsg extends MsgAtom{
018
019 public RecMsg(ATerm msg, TBTermFactory tbfactory, PositionInformation posInfo){
020 super(msg, tbfactory, posInfo);
021 }
022
023 public ProcessExpression copy(){
024 Atom a = new RecMsg(msg, tbfactory, getPosInfo());
025 a.copyAtomAttributes(this);
026 return a;
027 }
028
029 public void compile(ProcessInstance pi, Stack<String> calls, State follow) throws ToolBusException{
030 super.compile(pi, calls, follow);
031
032 registerPartners();
033 }
034
035 public void registerPartners(){
036 MatchStore matchStore = getToolBus().getMatchStore();
037 matchStore.registerReceiveMessage(this);
038 }
039
040 public void destroy(){
041 MatchStore matchStore = getToolBus().getMatchStore();
042 matchStore.deregisterReceiveMessage(this);
043 }
044
045 public boolean execute(){
046 // Communication is always initiated by the sender,
047 // So for the receiver nothing needs to be done.
048 return false;
049 }
050 }