Divide the MSB source codes into two repos
[msb/apigateway.git] / apiroute / apiroute-service / src / main / java / org / onap / msb / apiroute / wrapper / queue / ServiceListQueue.java
1 package org.onap.msb.apiroute.wrapper.queue;
2
3 import java.util.List;
4 import java.util.Map;
5 import java.util.concurrent.BlockingQueue;
6
7 import org.apache.http.HttpEntity;
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
10
11 public class ServiceListQueue extends BaseQueue<HttpEntity> {
12
13   private static final Logger LOGGER = LoggerFactory.getLogger(ServiceListQueue.class);
14
15   
16   private static final int SERVICE_LIST_DATA_QUEUE_NUM = 1;
17   private static final int SERVICE_LIST_QUEUE_INDEX = 0;
18
19   public ServiceListQueue(final int queueCapacity) {
20     super(SERVICE_LIST_DATA_QUEUE_NUM,queueCapacity);
21   }
22
23   @Override
24   public void put(ServiceData<HttpEntity> data) throws InterruptedException {
25     BlockingQueue<ServiceData<HttpEntity>> queue=getQueue(SERVICE_LIST_QUEUE_INDEX);
26     
27     int size=queue.size();
28 //    LOGGER.info("before put ServiceListQueue[size:"+size+"] success :[service num]"+data.getData().size());
29     //先清空队列
30     if(size>0){
31       queue.clear();
32     }
33     //插入记录
34     queue.put(data);
35     
36   }
37
38   @Override
39   public ServiceData<HttpEntity> take(int queueIndex) throws InterruptedException {
40     BlockingQueue<ServiceData<HttpEntity>> queue = getQueue(queueIndex);
41     ServiceData<HttpEntity> serviceData = queue.take();
42     return serviceData;
43     
44     /*//取队列最新一条数据
45     if (queue.isEmpty()) {
46       LOGGER.info("take a single serviceData from ServiceListQueue ");
47       return serviceData;
48     } else {
49       List<ServiceData<Map<String, List<String>>>> serviceDataList =
50           new ArrayList<ServiceData<Map<String, List<String>>>>();
51       //一次性从BlockingQueue获取所有数据
52       queue.drainTo(serviceDataList);
53       LOGGER.info("take multiple serviceDatas from ServiceListQueue :[num]"+serviceDataList.size());
54       return serviceDataList.get(serviceDataList.size() - 1);
55     }*/
56   }
57
58
59 }