Separate XDebugResponse from ResponseListner.
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / core / xdebug / ResponseList.java
1 package net.sourceforge.phpeclipse.xdebug.core.xdebug;
2
3 import java.util.HashMap;
4 import net.sourceforge.phpeclipse.xdebug.core.xdebug.XDebugResponse;
5
6 public class ResponseList {
7         private int fLastId;
8         private HashMap fList;
9
10         public ResponseList() {
11                 fLastId = -1;
12                 fList = new HashMap();
13         }
14
15         public synchronized void add(XDebugResponse response) {
16                 int id = response.getTransactionID();
17                 fList.put(new Integer(id), response);
18                 fLastId = id;
19                 notifyAll();
20         }
21
22         public synchronized XDebugResponse get(int id) {
23                 while (id > fLastId) {
24                         try {
25                                 wait();
26                         } catch (InterruptedException e) {
27                                 e.printStackTrace();
28                         }
29                 }
30                 if (fList.containsKey(new Integer(id)))
31                         return (XDebugResponse) fList.remove(new Integer(id));
32                 else
33                         return null;
34         }
35 }