Package org.apache.catalina.tribes.test.transport

Source Code of org.apache.catalina.tribes.test.transport.SocketNioReceive$MyList

package org.apache.catalina.tribes.test.transport;

import java.text.DecimalFormat;

import org.apache.catalina.tribes.ChannelMessage;
import org.apache.catalina.tribes.Member;
import org.apache.catalina.tribes.MessageListener;
import org.apache.catalina.tribes.io.ChannelData;
import org.apache.catalina.tribes.io.XByteBuffer;
import org.apache.catalina.tribes.membership.MemberImpl;
import org.apache.catalina.tribes.transport.nio.NioReceiver;

public class SocketNioReceive {
    static int count = 0;
    static int accept = 0;
    static long start = 0;
    static double mb = 0;
    static int len = 0;
    static DecimalFormat df = new DecimalFormat("##.00");
    static double seconds = 0;

    protected static Object mutex = new Object();
    public static void main(String[] args) throws Exception {
        Member mbr = new MemberImpl("localhost", 9999, 0);
        ChannelData data = new ChannelData();
        data.setAddress(mbr);
        byte[] buf = new byte[8192 * 4];
        data.setMessage(new XByteBuffer(buf, false));
        buf = XByteBuffer.createDataPackage(data);
        len = buf.length;
        NioReceiver receiver = new NioReceiver();
        receiver.setPort(9999);
        receiver.setHost("localhost");
        MyList list = new MyList();
        receiver.setMessageListener(list);
        receiver.start();
        System.out.println("Listening on 9999");
        while (true) {
            try {
                synchronized (mutex) {
                    mutex.wait(5000);
                    if ( start != 0 ) {
                        System.out.println("Throughput " + df.format(mb / seconds) + " MB/seconds, messages "+count+" accepts "+accept+", total "+mb+" MB.");
                    }
                }
            }catch (Throwable x) {
                x.printStackTrace();
            }
        }
    }
   
    public static class MyList implements MessageListener {
        boolean first = true;
       
       
        public void messageReceived(ChannelMessage msg) {
            if (first) {
                first = false;
                start = System.currentTimeMillis();
            }
            mb += ( (double) len) / 1024 / 1024;
            synchronized (this) {count++;}
            if ( ( (count) % 10000) == 0) {
                long time = System.currentTimeMillis();
                seconds = ( (double) (time - start)) / 1000;
                System.out.println("Throughput " + df.format(mb / seconds) + " MB/seconds, messages "+count+", total "+mb+" MB.");
            }
        }       

        public boolean accept(ChannelMessage msg) {
            synchronized (this) {accept++;}
            return true;
        }

    }
}
TOP

Related Classes of org.apache.catalina.tribes.test.transport.SocketNioReceive$MyList

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.