BBS水木清华站∶精华区
发信人: loveangel (琴儿), 信区: Java
标 题: 程序3:userlist.java,message.java,messageque.java
发信站: BBS 水木清华站 (Sun Aug 13 20:44:35 2000)
/**
* Insert the type's description here.
* Creation date: (00-8-3 17:35:04)
* @author: Administrator
*/
class Message {
private String user;
private String message;
/**
* Message constructor comment.
*/
public Message() {
super();
}
/**
* Message constructor comment.
*/
public Message(String user,String message)
{
this.user=user;
this.message=message;
}
protected String getMessage()
{
return message;
}
protected String getUser()
{
return user;
}
public String toString()
{
return user+":"+message;
}
}
//messageque.java
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Vector;
/**
* Insert the type's description here.
* Creation date: (00-8-3 17:23:12)
* @author: Administrator
*/
class MessageQueue {
private Vector messageq=new Vector();
/**
* MessageQueue constructor comment.
*/
public MessageQueue() {
super();
}
protected synchronized void add(Message message)
{
messageq.addElement(message);
notifyAll();
}
protected synchronized Enumeration listMessages()
{
try
{
if(messageq.isEmpty())
{
wait(30*1000);
}
}
catch(InterruptedException ie)
{
}
return messageq.elements();
}
protected synchronized void reset()
{
messageq.removeAllElements();
}
}
//userlist.java
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.Vector;
/**
* Insert the type's description here.
* Creation date: (00-8-3 16:31:54)
* @author: Administrator
*/
class UserList
{
private Hashtable list=new Hashtable();
private Hashtable active=new Hashtable();
/**
* UserList constructor comment.
*/
public UserList() {
super();
}
protected synchronized boolean add(String user)
{
if(exists(user))return false;
list.put(user,new MessageQueue());
touch(user);
return true;
}
protected void addMessage(Message message)
{
Enumeration allUsers=list.keys();
while(allUsers.hasMoreElements())
addUserMessage((String)allUsers.nextElement(),message);
}
private void addUserMessage(String user,Message message)
{
((MessageQueue)list.get(user)).add(message);
}
protected synchronized boolean drop(String user)
{
if(!exists(user))
return false;
list.remove(user);
active.remove(user);
return true;
}
protected boolean exists(String user)
{
return list.containsKey(user);
}
protected Enumeration getMessages(String user)
{
touch(user);
return ((MessageQueue)list.get(user)).listMessages();
}
protected Enumeration getMessges(String user)
{
touch(user);
return ((MessageQueue)list.get(user)).listMessages();
}
protected synchronized Enumeration inactive(int timeout)
{
Vector inactive=new Vector();
long now=System.currentTimeMillis();
long when=now-timeout;
Enumeration users=list.keys();
while(users.hasMoreElements())
{
String user=(String)users.nextElement();
if(((Long)active.get(user)).longValue()<when)
{
inactive.addElement(user);
}
}
return inactive.elements();
}
protected synchronized Enumeration list()
{
return list.keys();
}
protected void resetUser(String user)
{
((MessageQueue)list.get(user)).reset();
}
protected synchronized void touch(String user)
{
if(exists(user))
{
active.put(user,new Long(System.currentTimeMillis()));
}
}
}
//gochat.html
<html><head>
<title>chatapplet</title>
</head>
<body>
<hr>
<applet
name="chatapplet"
code=chatapplet
width=500
height=300
align="Middle">
</applet>
<hr>
</body>
</html>
谢谢!
请至email:wqwwlw@263.net
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.5.34]
BBS水木清华站∶精华区