1   /**
2    * Logback: the reliable, generic, fast and flexible logging framework.
3    * 
4    * Copyright (C) 1999-2006, QOS.ch
5    * 
6    * This library is free software, you can redistribute it and/or modify it under
7    * the terms of the GNU Lesser General Public License as published by the Free
8    * Software Foundation.
9    */
10  package ch.qos.logback.access.net;
11  
12  import java.io.BufferedInputStream;
13  import java.io.ObjectInputStream;
14  import java.net.ServerSocket;
15  import java.net.Socket;
16  import java.util.ArrayList;
17  import java.util.List;
18  
19  import ch.qos.logback.access.spi.AccessEvent;
20  
21  
22  /**
23   * @author Sébastien Pennec
24   */
25  public class MockSocketServer extends Thread {
26  
27    static final int PORT = 4560;
28  
29    final int loopLen;
30  
31    List<AccessEvent> accessEventList = new ArrayList<AccessEvent>();
32    boolean finished = false;
33  
34    MockSocketServer(int loopLen) {
35      super();
36      this.loopLen = loopLen;
37    }
38  
39    @Override
40    public void run() {
41      ObjectInputStream ois = null;
42      ServerSocket serverSocket = null;
43      // Object readObject;
44      AccessEvent event;
45      try {
46        serverSocket = new ServerSocket(PORT);
47        Socket socket = serverSocket.accept();
48        ois = new ObjectInputStream(new BufferedInputStream(socket
49            .getInputStream()));
50        for (int i = 0; i < loopLen; i++) {
51          event = (AccessEvent) ois.readObject();
52          accessEventList.add(event);
53        }
54      } catch (Exception se) {
55        se.printStackTrace();
56      } finally {
57  
58        if (ois != null) {
59          try {
60            ois.close();
61          } catch (Exception e) {
62          }
63        }
64        if (serverSocket != null) {
65          try {
66            serverSocket.close();
67          } catch (Exception e) {
68          }
69        }
70      }
71      finished = true;
72    }
73  }