1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.core.net.server;
15
16 import java.io.IOException;
17 import java.io.Serializable;
18 import java.net.InetAddress;
19 import java.net.ServerSocket;
20 import java.util.concurrent.Executor;
21
22 import javax.net.ServerSocketFactory;
23
24 import ch.qos.logback.core.spi.PreSerializationTransformer;
25
26
27
28
29
30
31 public class InstrumentedServerSocketAppenderBase extends AbstractServerSocketAppender<Serializable> {
32
33 private final ServerSocket serverSocket;
34 private final ServerListener<RemoteReceiverClient> listener;
35 private final ServerRunner<RemoteReceiverClient> runner;
36
37 @SuppressWarnings("rawtypes")
38 private ServerListener lastListener;
39
40 public InstrumentedServerSocketAppenderBase(ServerSocket serverSocket) {
41 this(serverSocket, new RemoteReceiverServerListener(serverSocket), null);
42 }
43
44 public InstrumentedServerSocketAppenderBase(ServerSocket serverSocket,
45 ServerListener<RemoteReceiverClient> listener, ServerRunner<RemoteReceiverClient> runner) {
46 this.serverSocket = serverSocket;
47 this.listener = listener;
48 this.runner = runner;
49 }
50
51 @Override
52 protected void postProcessEvent(Serializable event) {
53 }
54
55 @Override
56 protected PreSerializationTransformer<Serializable> getPST() {
57 return new PreSerializationTransformer<Serializable>() {
58 public Serializable transform(Serializable event) {
59 return event;
60 }
61 };
62 }
63
64 @Override
65 protected ServerSocketFactory getServerSocketFactory() throws Exception {
66 return new ServerSocketFactory() {
67
68 @Override
69 public ServerSocket createServerSocket(int port) throws IOException {
70 return serverSocket;
71 }
72
73 @Override
74 public ServerSocket createServerSocket(int port, int backlog) throws IOException {
75 return serverSocket;
76 }
77
78 @Override
79 public ServerSocket createServerSocket(int port, int backlog, InetAddress ifAddress) throws IOException {
80 return serverSocket;
81 }
82 };
83 }
84
85 @Override
86 protected ServerRunner<RemoteReceiverClient> createServerRunner(ServerListener<RemoteReceiverClient> listener,
87 Executor executor) {
88 lastListener = listener;
89 return runner != null ? runner : super.createServerRunner(listener, executor);
90 }
91
92 @Override
93 protected ServerListener<RemoteReceiverClient> createServerListener(ServerSocket socket) {
94 return listener;
95 }
96
97 @SuppressWarnings("rawtypes")
98 public ServerListener getLastListener() {
99 return lastListener;
100 }
101
102 }