1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.hc.core5.http.impl.bootstrap;
28
29 import org.apache.hc.core5.http.ExceptionListener;
30 import org.apache.hc.core5.http.impl.io.HttpService;
31 import org.apache.hc.core5.http.io.HttpServerConnection;
32 import org.apache.hc.core5.http.protocol.BasicHttpContext;
33 import org.apache.hc.core5.http.protocol.HttpCoreContext;
34 import org.apache.hc.core5.io.CloseMode;
35
36 class Worker implements Runnable {
37
38 private final HttpService httpservice;
39 private final HttpServerConnection conn;
40 private final ExceptionListener exceptionListener;
41
42 Worker(
43 final HttpService httpservice,
44 final HttpServerConnection conn,
45 final ExceptionListener exceptionListener) {
46 super();
47 this.httpservice = httpservice;
48 this.conn = conn;
49 this.exceptionListener = exceptionListener;
50 }
51
52 public HttpServerConnection getConnection() {
53 return this.conn;
54 }
55
56 @Override
57 public void run() {
58 try {
59 final BasicHttpContext localContext = new BasicHttpContext();
60 final HttpCoreContext context = HttpCoreContext.adapt(localContext);
61 while (!Thread.interrupted() && this.conn.isOpen()) {
62 this.httpservice.handleRequest(this.conn, context);
63 localContext.clear();
64 }
65 this.conn.close();
66 } catch (final Exception ex) {
67 this.exceptionListener.onError(this.conn, ex);
68 } finally {
69 this.conn.close(CloseMode.IMMEDIATE);
70 }
71 }
72
73 }