1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.spdy.server;
20
21 import java.util.List;
22 import javax.net.ssl.SSLEngine;
23
24 import org.eclipse.jetty.io.EndPoint;
25 import org.eclipse.jetty.npn.NextProtoNego;
26 import org.eclipse.jetty.server.Connector;
27 import org.eclipse.jetty.server.NegotiatingServerConnection;
28 import org.eclipse.jetty.util.log.Log;
29 import org.eclipse.jetty.util.log.Logger;
30
31 public class NPNServerConnection extends NegotiatingServerConnection implements NextProtoNego.ServerProvider
32 {
33 private static final Logger LOG = Log.getLogger(NPNServerConnection.class);
34
35 public NPNServerConnection(EndPoint endPoint, SSLEngine engine, Connector connector, List<String> protocols, String defaultProtocol)
36 {
37 super(connector, endPoint, engine, protocols, defaultProtocol);
38 NextProtoNego.put(engine, this);
39 }
40
41 @Override
42 public void unsupported()
43 {
44 protocolSelected(getDefaultProtocol());
45 }
46
47 @Override
48 public List<String> protocols()
49 {
50 return getProtocols();
51 }
52
53 @Override
54 public void protocolSelected(String protocol)
55 {
56 if (LOG.isDebugEnabled())
57 LOG.debug("{} protocol selected {}", this, protocol);
58 setProtocol(protocol != null ? protocol : getDefaultProtocol());
59 NextProtoNego.remove(getSSLEngine());
60 }
61
62 @Override
63 public void close()
64 {
65 NextProtoNego.remove(getSSLEngine());
66 super.close();
67 }
68 }