package org.pieShare.pieTools.piePlate.service.cluster.jgroupsCluster; import org.jgroups.Message; import org.jgroups.Receiver; import org.jgroups.ReceiverAdapter; import org.jgroups.View; import org.pieShare.pieTools.piePlate.model.PiePlateBeanNames; import org.pieShare.pieTools.piePlate.model.serializer.jacksonSerializer.JGroupsPieAddress; import org.pieShare.pieTools.piePlate.service.channel.api.IIncomingChannel; import org.pieShare.pieTools.piePlate.service.channel.api.ITwoWayChannel; import org.pieShare.pieTools.piePlate.service.cluster.api.IClusterService; import org.pieShare.pieTools.piePlate.task.ChannelTask; import org.pieShare.pieTools.pieUtilities.service.beanService.IBeanService; import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.api.IExecutorService; /** * Created by Svetoslav on 17.01.14. */ public class ObjectBasedReceiver extends ReceiverAdapter implements Receiver { private IExecutorService executorService; private IBeanService beanService; private IClusterService clusterService; public void setExecutorService(IExecutorService service) { this.executorService = service; } public void setBeanService(IBeanService service) { this.beanService = service; } public void setClusterService(IClusterService clusterService) { this.clusterService = clusterService; } @Override public void receive(Message msg) { for(IIncomingChannel channel: this.clusterService.getIncomingChannels()) { ChannelTask task = this.beanService.getBean(ChannelTask.class); task.setChannel(channel); task.setMessage(msg.getBuffer()); JGroupsPieAddress ad = (JGroupsPieAddress) this.beanService.getBean(PiePlateBeanNames.getJgroupsPieAddress()); ad.setAddress(msg.getSrc()); ad.setClusterName(this.clusterService.getId()); task.setAddress(ad); this.executorService.execute(task); } } @Override public void viewAccepted(View view) { super.viewAccepted(view); } }