All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jgroups.util.MyReceiver Maven / Gradle / Ivy

Go to download

This artifact provides a single jar that contains all classes required to use remote EJB and JMS, including all dependencies. It is intended for use by those not using maven, maven users should just import the EJB and JMS BOM's instead (shaded JAR's cause lots of problems with maven, as it is very easy to inadvertently end up with different versions on classes on the class path).

The newest version!
package org.jgroups.util;

import org.jgroups.Message;
import org.jgroups.Receiver;
import org.jgroups.View;

import java.io.Closeable;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * Generic receiver for a JChannel
 * @author Bela Ban
 * @since  3.3
 */
public class MyReceiver implements Receiver, Closeable {
    protected final List 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);
    }

    @Override
    public void viewAccepted(View new_view) {
        if(verbose)
            System.out.printf("-- %s: view is %s\n", name, new_view);
    }

    public MyReceiver rawMsgs(boolean flag)      {this.raw_msgs=flag; return this;}
    public List       list()                     {return list;}
    public List  list(Function f) {return list.stream().map(f).collect(Collectors.toList());}
    public MyReceiver verbose(boolean flag)      {verbose=flag; return this;}
    public String        name()                     {return name;}
    public MyReceiver name(String name)          {this.name=name; return this;}
    public MyReceiver reset()                    {list.clear(); return this;}
    public int           size()                     {return list.size();}
    public void          close() throws IOException {reset();}

    @Override
    public String toString() {
        return String.format("%d elements", list.size());
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy