KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > transports > http > protocol > pipe > PipeResponse


1 package org.objectweb.celtix.bus.transports.http.protocol.pipe;
2
3 import java.io.IOException JavaDoc;
4 import java.io.InputStream JavaDoc;
5 import java.io.OutputStream JavaDoc;
6 import java.io.PipedInputStream JavaDoc;
7 import java.io.PipedOutputStream JavaDoc;
8 import java.net.URLConnection JavaDoc;
9 import java.util.List JavaDoc;
10 import java.util.Map JavaDoc;
11
12 public class PipeResponse {
13     Map JavaDoc<String JavaDoc, List JavaDoc<String JavaDoc>> reqHeaders;
14     InputStream JavaDoc reqIn;
15     URLConnection JavaDoc connection;
16     
17     Map JavaDoc<String JavaDoc, List JavaDoc<String JavaDoc>> headers;
18     InputStream JavaDoc in;
19     OutputStream JavaDoc pout;
20
21     public PipeResponse(URLConnection JavaDoc con,
22                         InputStream JavaDoc in2,
23                         Map JavaDoc<String JavaDoc, List JavaDoc<String JavaDoc>> requestHeaders) {
24         connection = con;
25         reqIn = in2;
26         reqHeaders = requestHeaders;
27     }
28     public URLConnection JavaDoc getURLConnection() {
29         return connection;
30     }
31     public Map JavaDoc<String JavaDoc, List JavaDoc<String JavaDoc>> getRequestHeaders() {
32         return reqHeaders;
33     }
34     public InputStream JavaDoc getRequestInputStream() {
35         return reqIn;
36     }
37     
38     public OutputStream JavaDoc setResponse(Map JavaDoc<String JavaDoc, List JavaDoc<String JavaDoc>> h) throws IOException JavaDoc {
39         synchronized (this) {
40             PipedInputStream JavaDoc pin = new BiggerPipeInputStream();
41             pout = new PipedOutputStream JavaDoc(pin);
42             headers = h;
43             in = pin;
44             notifyAll();
45             return pout;
46         }
47     }
48     public OutputStream JavaDoc getOutputStream() {
49         return pout;
50     }
51     
52     public Map JavaDoc<String JavaDoc, List JavaDoc<String JavaDoc>> getResponseHeaders(int timeout)
53         throws IOException JavaDoc {
54         synchronized (this) {
55             if (headers == null) {
56                 try {
57                     wait(timeout);
58                 } catch (InterruptedException JavaDoc e) {
59                     //ignore
60
}
61                 if (headers == null) {
62                     throw new IOException JavaDoc("Timeout getting response");
63                 }
64             }
65             return headers;
66         }
67     }
68     
69     public InputStream JavaDoc getInputStream(int timeout) throws IOException JavaDoc {
70         getResponseHeaders(timeout);
71         return in;
72     }
73
74
75     private static class BiggerPipeInputStream extends PipedInputStream JavaDoc {
76         BiggerPipeInputStream() {
77             super();
78             buffer = new byte[PIPE_SIZE * 4];
79         }
80     }
81 }
82
83
Popular Tags