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