package org.jgroups.demos; import org.jgroups.JChannel; import org.jgroups.Message; import org.jgroups.ReceiverAdapter; import org.jgroups.View; import java.io.BufferedReader; import java.io.InputStreamReader; public class Chat extends ReceiverAdapter { JChannel channel; public void viewAccepted(View new_view) { System.out.println("** view: " + new_view); } public void receive(Message msg) { String line="[" + msg.getSrc() + "]: " + msg.getObject(); System.out.println(line); } private void start(String props, String name) throws Exception { channel=new JChannel(props); if(name != null) channel.setName(name); channel.setReceiver(this); channel.connect("ChatCluster"); eventLoop(); channel.close(); } private void eventLoop() { BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); while(true) { try { System.out.print("> "); System.out.flush(); String line=in.readLine().toLowerCase(); if(line.startsWith("quit") || line.startsWith("exit")) { break; } Message msg=new Message(null, null, line); channel.send(msg); } catch(Exception e) { } } } public static void main(String[] args) throws Exception { String props="udp.xml"; String name=null; for(int i=0; i < args.length; i++) { if(args[i].equals("-props")) { props=args[++i]; continue; } if(args[i].equals("-name")) { name=args[++i]; continue; } help(); return; } new Chat().start(props, name); } protected static void help() { System.out.println("ChatDemo [-props XML config]"); } }