The Line Oriented Talker: Registry version 2
The Registry required a few changes to bring it into line with the new Telnet handler.
Registry.java
import java.lang.*;
import java.util.*;
public class TalkerRegistry
{
public static synchronized boolean register(Handler handler)
{
if (vTalkers == null)
{
vTalkers = new Vector();
}
boolean bReturn = handler.register(vTalkers);
if (bReturn)
System.out.println(vTalkers.size());
return bReturn;
}
public static synchronized void unregister(Handler handler)
{
if (vTalkers == null)
{
vTalkers = new Vector();
}
handler.unregister(vTalkers);
}
public static synchronized boolean isRegistered(Handler handler)
{
if (vTalkers == null)
{
vTalkers = new Vector();
}
if (vTalkers.indexOf(handler) != -1)
{
return true;
}
else
{
return false;
}
}
public static void postMessage(Handler handler, String strMessage)
{
if (vTalkers == null)
{
vTalkers = new Vector();
}
Object obj;
Telnet tObj, tHandler;
for (Enumeration enHandlers = vTalkers.elements(); enHandlers.hasMoreElements(); )
{
obj = enHandlers.nextElement();
if (handler instanceof Telnet)
{
tHandler = (Telnet)handler;
if (obj instanceof Telnet)
{
tObj = (Telnet)obj;
tObj.postMessage(new Message(new String("["+tHandler.getUserName()+"] "+strMessage+"\n")));
}
}
// no other cases defined
}
}
public static String getWelcomeMessage()
{
return "Welcome to the Talker\nAfter you're logged in, you can use @QUIT to quit.\n";
}
public static String getLoginMessage()
{
return "Please enter your name.\n";
}
private static Vector vTalkers;
}