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水木清华站∶精华区