1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.server.nio;
20
21 import java.io.IOException;
22 import java.nio.channels.SelectionKey;
23 import java.nio.channels.SocketChannel;
24 import java.util.ConcurrentModificationException;
25 import java.util.List;
26 import java.util.concurrent.CopyOnWriteArrayList;
27 import java.util.concurrent.Executor;
28
29 import org.eclipse.jetty.io.ByteBufferPool;
30 import org.eclipse.jetty.io.EndPoint;
31 import org.eclipse.jetty.io.NetworkTrafficListener;
32 import org.eclipse.jetty.io.NetworkTrafficSelectChannelEndPoint;
33 import org.eclipse.jetty.io.SelectChannelEndPoint;
34 import org.eclipse.jetty.io.SelectorManager;
35 import org.eclipse.jetty.server.ConnectionFactory;
36 import org.eclipse.jetty.server.HttpConnectionFactory;
37 import org.eclipse.jetty.server.ServerConnector;
38 import org.eclipse.jetty.server.Server;
39 import org.eclipse.jetty.util.ssl.SslContextFactory;
40 import org.eclipse.jetty.util.thread.Scheduler;
41
42
43
44
45
46
47 public class NetworkTrafficSelectChannelConnector extends ServerConnector
48 {
49 private final List<NetworkTrafficListener> listeners = new CopyOnWriteArrayList<NetworkTrafficListener>();
50
51 public NetworkTrafficSelectChannelConnector(Server server)
52 {
53 this(server,null,null,null,0,0,new HttpConnectionFactory());
54 }
55
56 public NetworkTrafficSelectChannelConnector(Server server, ConnectionFactory connectionFactory, SslContextFactory sslContextFactory)
57 {
58 super(server,sslContextFactory,connectionFactory);
59 }
60
61 public NetworkTrafficSelectChannelConnector(Server server, ConnectionFactory connectionFactory)
62 {
63 super(server,connectionFactory);
64 }
65
66 public NetworkTrafficSelectChannelConnector(Server server, Executor executor, Scheduler scheduler, ByteBufferPool pool, int acceptors, int selectors,
67 ConnectionFactory... factories)
68 {
69 super(server,executor,scheduler,pool,acceptors,selectors,factories);
70 }
71
72 public NetworkTrafficSelectChannelConnector(Server server, SslContextFactory sslContextFactory)
73 {
74 super(server,sslContextFactory);
75 }
76
77
78
79
80 public void addNetworkTrafficListener(NetworkTrafficListener listener)
81 {
82 listeners.add(listener);
83 }
84
85
86
87
88 public void removeNetworkTrafficListener(NetworkTrafficListener listener)
89 {
90 listeners.remove(listener);
91 }
92
93 @Override
94 protected SelectChannelEndPoint newEndPoint(SocketChannel channel, SelectorManager.ManagedSelector selectSet, SelectionKey key) throws IOException
95 {
96 NetworkTrafficSelectChannelEndPoint endPoint = new NetworkTrafficSelectChannelEndPoint(channel, selectSet, key, getScheduler(), getIdleTimeout(), listeners);
97 endPoint.notifyOpened();
98 return endPoint;
99 }
100
101 }