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.NetworkTrafficListener;
31 import org.eclipse.jetty.io.NetworkTrafficSelectChannelEndPoint;
32 import org.eclipse.jetty.io.SelectChannelEndPoint;
33 import org.eclipse.jetty.io.SelectorManager;
34 import org.eclipse.jetty.server.ConnectionFactory;
35 import org.eclipse.jetty.server.HttpConnectionFactory;
36 import org.eclipse.jetty.server.Server;
37 import org.eclipse.jetty.server.ServerConnector;
38 import org.eclipse.jetty.util.ssl.SslContextFactory;
39 import org.eclipse.jetty.util.thread.Scheduler;
40
41
42
43
44
45
46 public class NetworkTrafficSelectChannelConnector extends ServerConnector
47 {
48 private final List<NetworkTrafficListener> listeners = new CopyOnWriteArrayList<NetworkTrafficListener>();
49
50 public NetworkTrafficSelectChannelConnector(Server server)
51 {
52 this(server,null,null,null,0,0,new HttpConnectionFactory());
53 }
54
55 public NetworkTrafficSelectChannelConnector(Server server, ConnectionFactory connectionFactory, SslContextFactory sslContextFactory)
56 {
57 super(server,sslContextFactory,connectionFactory);
58 }
59
60 public NetworkTrafficSelectChannelConnector(Server server, ConnectionFactory connectionFactory)
61 {
62 super(server,connectionFactory);
63 }
64
65 public NetworkTrafficSelectChannelConnector(Server server, Executor executor, Scheduler scheduler, ByteBufferPool pool, int acceptors, int selectors,
66 ConnectionFactory... factories)
67 {
68 super(server,executor,scheduler,pool,acceptors,selectors,factories);
69 }
70
71 public NetworkTrafficSelectChannelConnector(Server server, SslContextFactory sslContextFactory)
72 {
73 super(server,sslContextFactory);
74 }
75
76
77
78
79 public void addNetworkTrafficListener(NetworkTrafficListener listener)
80 {
81 listeners.add(listener);
82 }
83
84
85
86
87 public void removeNetworkTrafficListener(NetworkTrafficListener listener)
88 {
89 listeners.remove(listener);
90 }
91
92 @Override
93 protected SelectChannelEndPoint newEndPoint(SocketChannel channel, SelectorManager.ManagedSelector selectSet, SelectionKey key) throws IOException
94 {
95 NetworkTrafficSelectChannelEndPoint endPoint = new NetworkTrafficSelectChannelEndPoint(channel, selectSet, key, getScheduler(), getIdleTimeout(), listeners);
96 endPoint.notifyOpened();
97 return endPoint;
98 }
99
100 }