package org.jgroups.util; import org.jgroups.Message; import org.jgroups.ReceiverAdapter; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; /** * Generic receiver for a JChannel * @author Bela Ban * @since 3.3 */ public class MyReceiver<T> extends ReceiverAdapter { protected final List<T> list=new CopyOnWriteArrayList<>(); protected String name; protected boolean verbose; protected boolean raw_msgs; public void receive(Message msg) { T obj=raw_msgs? (T)msg : (T)msg.getObject(); list.add(obj); if(verbose) { System.out.println((name() != null? name() + ":" : "") + " received message from " + msg.getSrc() + ": " + obj); } } public MyReceiver rawMsgs(boolean flag) {this.raw_msgs=flag; return this;} public List<T> list() {return list;} public MyReceiver<T> verbose(boolean flag) {verbose=flag; return this;} public String name() {return name;} public MyReceiver<T> name(String name) {this.name=name; return this;} public MyReceiver<T> reset() {list.clear(); return this;} public int size() {return list.size();} }