1 package org.onap.msb.apiroute.wrapper.queue;
6 import org.apache.http.HttpEntity;
7 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ServiceHealth;
8 import org.onap.msb.apiroute.wrapper.util.RouteUtil;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
14 public class QueueManager {
16 private static final Logger LOGGER = LoggerFactory
17 .getLogger(QueueManager.class);
19 private final BaseQueue<HttpEntity> serviceListQueue;
20 private final BaseQueue<List<ServiceHealth>> serviceQueue;
22 private volatile static QueueManager instance = null;
24 public static QueueManager getInstance() {
25 if (instance == null) {
26 synchronized (QueueManager.class) {
27 if (instance == null) {
28 instance = new QueueManager();
35 private QueueManager() {
36 serviceListQueue = new ServiceListQueue(
37 RouteUtil.SERVICE_LIST_QUEUE_CAPACITY);
38 serviceQueue = new ServiceQueue(RouteUtil.SERVICE_DATA_QUEUE_NUM,
39 RouteUtil.SERVICE_QUEUE_CAPACITY);
42 public ServiceData<HttpEntity> takeFromServiceListQueue(
43 int queueIndex) throws InterruptedException {
44 return serviceListQueue.take(queueIndex);
47 public ServiceData<List<ServiceHealth>> takeFromServiceQueue(int queueIndex)
48 throws InterruptedException {
49 return serviceQueue.take(queueIndex);
53 @SuppressWarnings("unchecked")
54 public <T> void putIn(ServiceData<T> data) throws InterruptedException {
56 if (data.getDataType() == ServiceData.DataType.service_list) {
57 LOGGER.debug("putIn service_list queue success");
58 serviceListQueue.put((ServiceData<HttpEntity>) data);
59 } else if (data.getDataType() == ServiceData.DataType.service) {
60 serviceQueue.put((ServiceData<List<ServiceHealth>>) data);
62 LOGGER.warn("DATA TYPE NOT SUPPORT:"+data.getDataType());