KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > httpclient > server > SimpleConnManager


1 /*
2  * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/test/org/apache/commons/httpclient/server/SimpleConnManager.java,v 1.2 2004/11/20 17:56:40 olegk Exp $
3  * $Revision: 480424 $
4  * $Date: 2006-11-29 05:56:49 +0000 (Wed, 29 Nov 2006) $
5  *
6  * ====================================================================
7  *
8  * Licensed to the Apache Software Foundation (ASF) under one or more
9  * contributor license agreements. See the NOTICE file distributed with
10  * this work for additional information regarding copyright ownership.
11  * The ASF licenses this file to You under the Apache License, Version 2.0
12  * (the "License"); you may not use this file except in compliance with
13  * the License. You may obtain a copy of the License at
14  *
15  * http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  * ====================================================================
23  *
24  * This software consists of voluntary contributions made by many
25  * individuals on behalf of the Apache Software Foundation. For more
26  * information on the Apache Software Foundation, please see
27  * <http://www.apache.org/>.
28  *
29  */

30
31 package org.apache.commons.httpclient.server;
32
33 import java.io.IOException JavaDoc;
34 import java.net.Socket JavaDoc;
35 import java.util.HashMap JavaDoc;
36 import java.util.Iterator JavaDoc;
37 import java.util.Map JavaDoc;
38
39 /**
40  * A REALLY simple connection manager.
41  *
42  * @author Oleg Kalnichevski
43  */

44 public class SimpleConnManager {
45     
46     private Map JavaDoc connsets = new HashMap JavaDoc();
47     
48     public SimpleConnManager() {
49         super();
50     }
51
52     public synchronized SimpleHttpServerConnection openConnection(final SimpleHost host)
53         throws IOException JavaDoc {
54         if (host == null) {
55             throw new IllegalArgumentException JavaDoc("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 JavaDoc socket = new Socket JavaDoc(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 JavaDoc {
74         if (host == null) {
75             throw new IllegalArgumentException JavaDoc("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 JavaDoc 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