2 import java.util.Queue;
3 import java.util.concurrent.ConcurrentLinkedQueue;
6 import org.opensrf.net.xmpp.XMPPException;
10 private ClientSession session;
11 private Method method;
13 private Queue<Result> resultQueue;
14 private boolean resetTimeout;
15 private boolean complete;
17 public Request(ClientSession ses, int id, Method method) {
21 resultQueue = new ConcurrentLinkedQueue<Result>();
26 public Request(ClientSession ses, int id, String methodName) {
27 this(ses, id, new Method(methodName));
30 public Request(ClientSession ses, int id, String methodName, List<Object> params) {
31 this(ses, id, new Method(methodName, params));
34 public void send() throws SessionException {
35 session.send(new Message(id, Message.REQUEST, method));
38 public Result recv(long millis) throws SessionException {
43 session.waitForMessage(millis);
44 if((result = resultQueue.poll()) != null)
50 long start = new Date().getTime();
51 session.waitForMessage(millis);
52 millis -= new Date().getTime() - start;
53 if((result = resultQueue.poll()) != null)
61 public void pushResponse(Result result) {
62 resultQueue.offer(result);
66 * @return This request's ID