ConnectionTimer.java
上传用户:huihesys
上传日期:2007-01-04
资源大小:3877k
文件大小:2k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. /* CVS ID: $Id: ConnectionTimer.java,v 1.2 2000/04/06 08:02:02 wastl Exp $ */
  2. package net.wastl.webmail.server;
  3. import java.util.*;
  4. import net.wastl.webmail.debug.ErrorHandler;
  5. /*
  6.  * ConnectionTimer.java
  7.  *
  8.  * Created: Tue Feb  2 12:27:43 1999
  9.  *
  10.  * Copyright (C) 1999-2000 Sebastian Schaffert
  11.  * 
  12.  * This program is free software; you can redistribute it and/or
  13.  * modify it under the terms of the GNU General Public License
  14.  * as published by the Free Software Foundation; either version 2
  15.  * of the License, or (at your option) any later version.
  16.  * 
  17.  * This program is distributed in the hope that it will be useful,
  18.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20.  * GNU General Public License for more details.
  21.  * 
  22.  * You should have received a copy of the GNU General Public License
  23.  * along with this program; if not, write to the Free Software
  24.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  25.  */
  26. /**
  27.  *
  28.  *
  29.  *
  30.  * @author Sebastian Schaffert
  31.  * @version $Revision: 1.2 $
  32.  */
  33. public class ConnectionTimer extends Thread {
  34.     private Vector connections;
  35.     private static final long sleep_interval=1000;
  36.     
  37.     public ConnectionTimer() {
  38. connections=new Vector();
  39. this.start();
  40.     }
  41.    
  42.     public void printStatus() {
  43. System.err.println(" Vulture: "+connections.size()+" connections in queue");
  44.     }
  45.     public void addTimeableConnection(TimeableConnection c) {
  46. synchronized(connections) {
  47.     connections.addElement(c);
  48. }
  49.     }
  50.     public void removeTimeableConnection(TimeableConnection c) {
  51. synchronized(connections) {
  52.     connections.removeElement(c);
  53. }
  54.     }
  55.     public void removeAll() {
  56. Enumeration e;
  57. synchronized(connections) {
  58.     e=connections.elements();
  59. }
  60. while(e.hasMoreElements()) {
  61.     TimeableConnection t=(TimeableConnection)e.nextElement();
  62.     t.timeoutOccured();
  63. }
  64.     }
  65.     public void run() {
  66. Enumeration e;
  67. while(true) {
  68.     synchronized(connections) {
  69. e=connections.elements();
  70.     }
  71.     while(e.hasMoreElements()) {
  72. TimeableConnection t=(TimeableConnection)e.nextElement();
  73. if(System.currentTimeMillis() - t.getLastAccess() > t.getTimeout()) {
  74.     t.timeoutOccured();
  75. }
  76.     }
  77.     try { this.sleep(sleep_interval); } catch(InterruptedException ex) { new ErrorHandler(ex); }
  78. }
  79.     }
  80. } // ConnectionTimer