1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.client;
20
21 import java.nio.ByteBuffer;
22 import java.util.List;
23
24 import org.eclipse.jetty.client.api.Request;
25 import org.eclipse.jetty.util.log.Log;
26 import org.eclipse.jetty.util.log.Logger;
27
28 public class RequestNotifier
29 {
30 private static final Logger LOG = Log.getLogger(ResponseNotifier.class);
31
32 private final HttpClient client;
33
34 public RequestNotifier(HttpClient client)
35 {
36 this.client = client;
37 }
38
39 public void notifyQueued(Request request)
40 {
41
42 List<Request.RequestListener> requestListeners = request.getRequestListeners(null);
43 for (int i = 0; i < requestListeners.size(); ++i)
44 {
45 Request.RequestListener listener = requestListeners.get(i);
46 if (listener instanceof Request.QueuedListener)
47 notifyQueued((Request.QueuedListener)listener, request);
48 }
49 List<Request.Listener> listeners = client.getRequestListeners();
50 for (int i = 0; i < listeners.size(); ++i)
51 {
52 Request.Listener listener = listeners.get(i);
53 notifyQueued(listener, request);
54 }
55 }
56
57 private void notifyQueued(Request.QueuedListener listener, Request request)
58 {
59 try
60 {
61 listener.onQueued(request);
62 }
63 catch (Exception x)
64 {
65 LOG.info("Exception while notifying listener " + listener, x);
66 }
67 }
68
69 public void notifyBegin(Request request)
70 {
71
72 List<Request.RequestListener> requestListeners = request.getRequestListeners(null);
73 for (int i = 0; i < requestListeners.size(); ++i)
74 {
75 Request.RequestListener listener = requestListeners.get(i);
76 if (listener instanceof Request.BeginListener)
77 notifyBegin((Request.BeginListener)listener, request);
78 }
79 List<Request.Listener> listeners = client.getRequestListeners();
80 for (int i = 0; i < listeners.size(); ++i)
81 {
82 Request.Listener listener = listeners.get(i);
83 notifyBegin(listener, request);
84 }
85 }
86
87 private void notifyBegin(Request.BeginListener listener, Request request)
88 {
89 try
90 {
91 listener.onBegin(request);
92 }
93 catch (Exception x)
94 {
95 LOG.info("Exception while notifying listener " + listener, x);
96 }
97 }
98
99 public void notifyHeaders(Request request)
100 {
101
102 List<Request.RequestListener> requestListeners = request.getRequestListeners(null);
103 for (int i = 0; i < requestListeners.size(); ++i)
104 {
105 Request.RequestListener listener = requestListeners.get(i);
106 if (listener instanceof Request.HeadersListener)
107 notifyHeaders((Request.HeadersListener)listener, request);
108 }
109 List<Request.Listener> listeners = client.getRequestListeners();
110 for (int i = 0; i < listeners.size(); ++i)
111 {
112 Request.Listener listener = listeners.get(i);
113 notifyHeaders(listener, request);
114 }
115 }
116
117 private void notifyHeaders(Request.HeadersListener listener, Request request)
118 {
119 try
120 {
121 listener.onHeaders(request);
122 }
123 catch (Exception x)
124 {
125 LOG.info("Exception while notifying listener " + listener, x);
126 }
127 }
128
129 public void notifyCommit(Request request)
130 {
131
132 List<Request.RequestListener> requestListeners = request.getRequestListeners(null);
133 for (int i = 0; i < requestListeners.size(); ++i)
134 {
135 Request.RequestListener listener = requestListeners.get(i);
136 if (listener instanceof Request.CommitListener)
137 notifyCommit((Request.CommitListener)listener, request);
138 }
139 List<Request.Listener> listeners = client.getRequestListeners();
140 for (int i = 0; i < listeners.size(); ++i)
141 {
142 Request.Listener listener = listeners.get(i);
143 notifyCommit(listener, request);
144 }
145 }
146
147 private void notifyCommit(Request.CommitListener listener, Request request)
148 {
149 try
150 {
151 listener.onCommit(request);
152 }
153 catch (Exception x)
154 {
155 LOG.info("Exception while notifying listener " + listener, x);
156 }
157 }
158
159 public void notifyContent(Request request, ByteBuffer content)
160 {
161
162 List<Request.RequestListener> requestListeners = request.getRequestListeners(null);
163 for (int i = 0; i < requestListeners.size(); ++i)
164 {
165 Request.RequestListener listener = requestListeners.get(i);
166 if (listener instanceof Request.ContentListener)
167 notifyContent((Request.ContentListener)listener, request, content);
168 }
169 List<Request.Listener> listeners = client.getRequestListeners();
170 for (int i = 0; i < listeners.size(); ++i)
171 {
172 Request.Listener listener = listeners.get(i);
173 notifyContent(listener, request, content);
174 }
175 }
176
177 private void notifyContent(Request.ContentListener listener, Request request, ByteBuffer content)
178 {
179 try
180 {
181 listener.onContent(request, content);
182 }
183 catch (Exception x)
184 {
185 LOG.info("Exception while notifying listener " + listener, x);
186 }
187 }
188
189 public void notifySuccess(Request request)
190 {
191
192 List<Request.RequestListener> requestListeners = request.getRequestListeners(null);
193 for (int i = 0; i < requestListeners.size(); ++i)
194 {
195 Request.RequestListener listener = requestListeners.get(i);
196 if (listener instanceof Request.SuccessListener)
197 notifySuccess((Request.SuccessListener)listener, request);
198 }
199 List<Request.Listener> listeners = client.getRequestListeners();
200 for (int i = 0; i < listeners.size(); ++i)
201 {
202 Request.Listener listener = listeners.get(i);
203 notifySuccess(listener, request);
204 }
205 }
206
207 private void notifySuccess(Request.SuccessListener listener, Request request)
208 {
209 try
210 {
211 listener.onSuccess(request);
212 }
213 catch (Exception x)
214 {
215 LOG.info("Exception while notifying listener " + listener, x);
216 }
217 }
218
219 public void notifyFailure(Request request, Throwable failure)
220 {
221
222 List<Request.RequestListener> requestListeners = request.getRequestListeners(null);
223 for (int i = 0; i < requestListeners.size(); ++i)
224 {
225 Request.RequestListener listener = requestListeners.get(i);
226 if (listener instanceof Request.FailureListener)
227 notifyFailure((Request.FailureListener)listener, request, failure);
228 }
229 List<Request.Listener> listeners = client.getRequestListeners();
230 for (int i = 0; i < listeners.size(); ++i)
231 {
232 Request.Listener listener = listeners.get(i);
233 notifyFailure(listener, request, failure);
234 }
235 }
236
237 private void notifyFailure(Request.FailureListener listener, Request request, Throwable failure)
238 {
239 try
240 {
241 listener.onFailure(request, failure);
242 }
243 catch (Exception x)
244 {
245 LOG.info("Exception while notifying listener " + listener, x);
246 }
247 }
248 }