package edu.ucsb.jpregel.system.commands; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import jicosfoundation.Command; import jicosfoundation.Proxy; import jicosfoundation.ServiceImpl; import edu.ucsb.jpregel.system.Message; import edu.ucsb.jpregel.system.Worker; /** * * @author cappello */ public class SendMessage implements Command<Worker> { private int sendingWorkerNum; private int partId; private Object vertexId; private Message message; private long superStep; public SendMessage() {} public SendMessage( int sendingWorkerNum, int partId, Object vertexId, Message message, Long superStep ) { this.sendingWorkerNum = sendingWorkerNum; this.partId = partId; this.vertexId = vertexId; this.message = message; this.superStep = superStep; } @Override public void execute( Proxy proxy ) { proxy.sendCommand( this ); } @Override public void execute( Worker worker ) throws Exception { worker.receiveMessage( sendingWorkerNum, partId, vertexId, message, superStep ); } @Override public void writeExternal(ObjectOutput oo) throws IOException { oo.writeInt(sendingWorkerNum); oo.writeInt(partId); oo.writeObject(vertexId); oo.writeObject(message); oo.writeLong(superStep); } @Override public void readExternal(ObjectInput oi) throws IOException, ClassNotFoundException { this.sendingWorkerNum = oi.readInt(); this.partId = oi.readInt(); this.vertexId = oi.readInt(); this.message = (Message) oi.readObject(); this.superStep = oi.readLong(); } @Override public String toString() { return sendingWorkerNum + " " + partId + " " + vertexId + " message: ({" + message + "} " +superStep; } }