package br.ufms.dct.simplerep.handlers;
// let's start using the seqSamoa version
import java.util.concurrent.BlockingQueue;
import br.ufms.dct.simplerep.ar.MessageContext;
import br.ufms.dct.simplerep.ar.SystemContext;
import br.ufms.dct.simplerep.kernels.SamoaKernel;
public class ABCastInHandler implements AbstractHandler {
private BlockingQueue<MessageContext> inQueue;
private BlockingQueue<MessageContext> outQueue;
public ABCastInHandler(SystemContext sysContext) {
inQueue = (BlockingQueue<MessageContext>) sysContext.get(SamoaKernel.SAMOA_IN_QUEUE);
outQueue = (BlockingQueue<MessageContext>) sysContext.get(SamoaKernel.SAMOA_OUT_QUEUE);
}
public void invoke(MessageContext context) {
System.out.println("[ABCastInHandler] invoke");
// producing...
/* try {
System.out.println("ABCastInHandler is enqueuing a message for samoa...");
inQueue.put(context);
synchronized(inQueue) {
// waiting for the ABcast, then releasing resources
inQueue.wait();
}
} catch (InterruptedException e1) {
Thread.currentThread().interrupt();
}
// receiving feedback from samoa
try {
MessageContext broadcastMessage = outQueue.take();
System.out.println("Message received in the ABCastInHandler from SAMOA: " + broadcastMessage.getEnvelope().toString());
} catch (InterruptedException e) {
e.printStackTrace();
}
*/
}
}