public class VCLinker extends Linker { public VectorClock vc; int receiveTag[] = null; public VCLinker(String basename, int id, int N) throws Exception { super(basename, id, N); vc = new VectorClock(N, id); receiveTag = new int[N]; } public void sendMsg(int destId, String tag, String msg) { super.sendMsg(destId, "vector", vc.toString()); super.sendMsg(destId, tag, msg); vc.sendAction(); } public void simpleSendMsg(int destId, String tag, String msg) { super.sendMsg(destId, tag, msg); } public Msg receiveMsg(int fromId) throws java.io.IOException { Msg m1 = super.receiveMsg(fromId); if (m1.getTag().equals("vector")) { Util.readArray(m1.getMessage(), receiveTag); vc.receiveAction(receiveTag); Msg m = super.receiveMsg(fromId);//app message return m; } else return m1; } }