Ignore:
Timestamp:
06/25/13 12:10:16 (11 years ago)
Author:
stoda
Message:

New function created: getResults which returns a list

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/main/java/omq/client/proxy/Proxymq.java

    r55 r57  
    55import java.lang.reflect.Method;
    66import java.lang.reflect.Proxy;
     7import java.util.ArrayList;
    78import java.util.Collection;
    89import java.util.HashMap;
    910import java.util.Hashtable;
     11import java.util.List;
    1012import java.util.Map;
    1113import java.util.Properties;
     
    256258        }
    257259
     260        @SuppressWarnings("unused")
     261        private Object getResults(String corrId, int wait, long timeout, Class<?> type) throws Exception {
     262                Response resp = null;
     263                List<Object> list = new ArrayList<Object>();
     264
     265                int i = 0;
     266                long localTimeout = timeout;
     267                long start = System.currentTimeMillis();
     268
     269                while (i < wait) {
     270                        synchronized (results) {
     271                                // Due to we are using notifyAll(), we need to control the real
     272                                // time
     273                                while (!results.containsKey(corrId) && (timeout - localTimeout) >= 0) {
     274                                        results.wait(localTimeout);
     275                                        localTimeout = System.currentTimeMillis() - start;
     276                                }
     277                                if ((timeout - localTimeout) <= 0) {
     278                                        throw new TimeoutException("Timeout exception time: " + timeout);
     279                                }
     280                                // Remove the corrId to receive new replies
     281                                resp = serializer.deserializeResponse(results.remove(corrId), type);
     282                                list.add(resp.getResult());
     283
     284                        }
     285                        i++;
     286                }
     287                synchronized (results) {
     288                        results.put(corrId, null);
     289                }
     290
     291                return list;
     292        }
     293
    258294        /**
    259295         *
Note: See TracChangeset for help on using the changeset viewer.