package edu.ucsb.jpregel.system.commands;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Map;
import jicosfoundation.Command;
import jicosfoundation.Proxy;
import jicosfoundation.Service;
import edu.ucsb.jpregel.system.MessageQ;
import edu.ucsb.jpregel.system.Worker;
/**
*
* @author Pete Cappello
*/
public class SendVertexIdToMessageQMap implements Command<Worker>
{
private Service sendingWorker;
private Map<Object, MessageQ> vertexIdToMessageQMap;
private Long superStep;
public SendVertexIdToMessageQMap() {}
public SendVertexIdToMessageQMap( Service sendingWorker, Map<Object, MessageQ> vertexIdToMessageQMap, Long superStep )
{
this.sendingWorker = sendingWorker;
this.vertexIdToMessageQMap = vertexIdToMessageQMap;
this.superStep = superStep;
}
@Override
public void execute( Proxy proxy ) { proxy.sendCommand( this ); }
@Override
public void execute( Worker worker) throws Exception
{
worker.receiveVertexIdToMessageQMap( sendingWorker, vertexIdToMessageQMap, superStep );
}
@Override
public void writeExternal(ObjectOutput oo) throws IOException
{
oo.writeObject(sendingWorker);
oo.writeObject(vertexIdToMessageQMap);
oo.writeObject(superStep);
}
@Override
public void readExternal(ObjectInput oi) throws IOException, ClassNotFoundException
{
sendingWorker = (Service) oi.readObject();
vertexIdToMessageQMap = (Map<Object, MessageQ>) oi.readObject();
superStep = (Long) oi.readObject();
}
}