1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.access.common.net;
15
16 import java.io.BufferedInputStream;
17 import java.io.IOException;
18 import java.net.Socket;
19
20 import ch.qos.logback.access.common.spi.AccessContext;
21 import ch.qos.logback.access.common.spi.IAccessEvent;
22 import ch.qos.logback.core.spi.FilterReply;
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public class SocketNode implements Runnable {
41
42 Socket socket;
43 AccessContext context;
44 HardenedAccessEventInputStream hardenedOIS;
45
46 public SocketNode(Socket socket, AccessContext context) {
47 this.socket = socket;
48 this.context = context;
49 try {
50 hardenedOIS = new HardenedAccessEventInputStream(new BufferedInputStream(socket.getInputStream()));
51 } catch (Exception e) {
52 System.out.println("Could not open HardenedObjectInputStream to " + socket + e);
53 }
54 }
55
56 @Override
57 public void run() {
58 IAccessEvent event;
59
60 try {
61 while (true) {
62
63 event = (IAccessEvent) hardenedOIS.readObject();
64
65 if (context.getFilterChainDecision(event) == FilterReply.DENY) {
66 break;
67 }
68
69 context.callAppenders(event);
70 }
71 } catch (java.io.EOFException e) {
72 System.out.println("Caught java.io.EOFException closing connection.");
73 } catch (java.net.SocketException e) {
74 System.out.println("Caught java.net.SocketException closing connection.");
75 } catch (IOException e) {
76 System.out.println("Caught java.io.IOException: " + e);
77 System.out.println("Closing connection.");
78 } catch (Exception e) {
79 System.out.println("Unexpected exception. Closing connection." + e);
80 }
81
82 try {
83 hardenedOIS.close();
84 } catch (Exception e) {
85 System.out.println("Could not close connection." + e);
86 }
87 }
88 }