org.jgroups.demos.Chat Maven / Gradle / Ivy
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);
}
/** Method called from other app, injecting channel */
public void start(JChannel ch) throws Exception {
channel=ch;
channel.setReceiver(this);
channel.connect("ChatCluster");
eventLoop();
channel.close();
}
private void start(String props, String name) throws Exception {
channel=new JChannel(props);
if(name != null)
channel.name(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("Chat [-props XML config] [-name name]");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy