package de.huxhorn.lilith.sandbox;
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 JGroupsSandbox
{
private JChannel channel;
private String userName;
public static void main(String args[])
throws Exception
{
new JGroupsSandbox().start();
}
void start()
throws Exception
{
// https://issues.jboss.org/browse/JGRP-1919
// *sigh*
userName = System.getProperty("user.name");
channel = new JChannel();
channel.setReceiver(new MyReceiver());
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();
if(line == null)
{
throw new RuntimeException("Could not read next line. Using 'gradle run'? Add --no-daemon option to your call.");
}
line = line.toLowerCase();
if(line.startsWith("quit") || line.startsWith("exit"))
{
break;
}
line = "[" + userName + "] " + line;
Message msg = new Message(null, null, line);
channel.send(msg);
}
catch(Exception e)
{
e.printStackTrace();
break;
}
}
}
private static class MyReceiver
extends ReceiverAdapter
{
public void viewAccepted(View new_view)
{
System.out.println("** view: " + new_view);
}
public void receive(Message msg)
{
System.out.println(msg.getSrc() + ": " + msg.getObject());
}
}
}