1 30 31 package org.apache.commons.httpclient.server; 32 33 import java.io.IOException ; 34 import java.net.Socket ; 35 import java.util.HashMap ; 36 import java.util.Iterator ; 37 import java.util.Map ; 38 39 44 public class SimpleConnManager { 45 46 private Map connsets = new HashMap (); 47 48 public SimpleConnManager() { 49 super(); 50 } 51 52 public synchronized SimpleHttpServerConnection openConnection(final SimpleHost host) 53 throws IOException { 54 if (host == null) { 55 throw new IllegalArgumentException ("Host may not be null"); 56 } 57 SimpleHttpServerConnection conn = null; 58 SimpleConnList connlist = (SimpleConnList)this.connsets.get(host); 59 if (connlist != null) { 60 conn = connlist.removeFirst(); 61 if (conn != null && !conn.isOpen()) { 62 conn = null; 63 } 64 } 65 if (conn == null) { 66 Socket socket = new Socket (host.getHostName(), host.getPort()); 67 conn = new SimpleHttpServerConnection(socket); 68 } 69 return conn; 70 } 71 72 public synchronized void releaseConnection(final SimpleHost host, 73 final SimpleHttpServerConnection conn) throws IOException { 74 if (host == null) { 75 throw new IllegalArgumentException ("Host may not be null"); 76 } 77 if (conn == null) { 78 return; 79 } 80 if (!conn.isKeepAlive()) { 81 conn.close(); 82 } 83 if (conn.isOpen()) { 84 SimpleConnList connlist = (SimpleConnList)this.connsets.get(host); 85 if (connlist == null) { 86 connlist = new SimpleConnList(); 87 this.connsets.put(host, connlist); 88 } 89 connlist.addConnection(conn); 90 } 91 } 92 93 public synchronized void shutdown() { 94 for (Iterator i = this.connsets.values().iterator(); i.hasNext();) { 95 SimpleConnList connlist = (SimpleConnList) i.next(); 96 connlist.shutdown(); 97 } 98 this.connsets.clear(); 99 } 100 101 } 102 | Popular Tags |