#
Junjie
2 天以前 90402710d962aa357062ecb94649e0f277c1dfb3
src/main/java/com/zy/core/cache/MessageQueue.java
@@ -4,6 +4,7 @@
import com.zy.core.model.Task;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.LinkedBlockingQueue;
@@ -65,21 +66,19 @@
     * 如果发现队列已满无法添加的话,会直接返回false。
     */
    public static boolean offer(SlaveType type, Integer id, Task task) {
        Queue<Task> queue = resolveQueue(type, id);
        if (queue == null) {
            return false;
        }
        switch (type) {
            case Crn:
                return CRN_EXCHANGE.get(id).offer(task);
            case DualCrn:
                return DUAL_CRN_EXCHANGE.get(id).offer(task);
            case Rgv:
                return RGV_EXCHANGE.get(id).offer(task);
            case Devp:
                return DEVP_EXCHANGE.get(id).offer(task);
            case Barcode:
                return BARCODE_EXCHANGE.get(id).offer(task);
            case Led:
                return LED_EXCHANGE.get(id).offer(task);
            case Scale:
                return SCALE_EXCHANGE.get(id).offer(task);
                return queue.offer(task);
            default:
                return false;
        }
@@ -90,21 +89,19 @@
     * 若队列为空,返回null。
     */
    public static Task poll(SlaveType type, Integer id) {
        Queue<Task> queue = resolveQueue(type, id);
        if (queue == null) {
            return null;
        }
        switch (type) {
            case Crn:
                return CRN_EXCHANGE.get(id).poll();
            case DualCrn:
                return DUAL_CRN_EXCHANGE.get(id).poll();
            case Rgv:
                return RGV_EXCHANGE.get(id).poll();
            case Devp:
                return DEVP_EXCHANGE.get(id).poll();
            case Barcode:
                return BARCODE_EXCHANGE.get(id).poll();
            case Led:
                return LED_EXCHANGE.get(id).poll();
            case Scale:
                return SCALE_EXCHANGE.get(id).poll();
                return queue.poll();
            default:
                return null;
        }
@@ -114,52 +111,75 @@
     * 取出元素,并不删除.
     */
    public static Task peek(SlaveType type, Integer id) {
        Queue<Task> queue = resolveQueue(type, id);
        if (queue == null) {
            return null;
        }
        switch (type) {
            case Crn:
                return CRN_EXCHANGE.get(id).peek();
            case DualCrn:
                return DUAL_CRN_EXCHANGE.get(id).peek();
            case Rgv:
                return RGV_EXCHANGE.get(id).peek();
            case Devp:
                return DEVP_EXCHANGE.get(id).peek();
            case Barcode:
                return BARCODE_EXCHANGE.get(id).peek();
            case Led:
                return LED_EXCHANGE.get(id).peek();
            case Scale:
                return SCALE_EXCHANGE.get(id).peek();
                return queue.peek();
            default:
                return null;
        }
    }
    public static void clear(SlaveType type, Integer id){
        Queue<Task> queue = resolveQueue(type, id);
        if (queue == null) {
            return;
        }
        switch (type) {
            case Crn:
                CRN_EXCHANGE.get(id).clear();
                break;
            case DualCrn:
                DUAL_CRN_EXCHANGE.get(id).clear();
                break;
            case Rgv:
                RGV_EXCHANGE.get(id).clear();
                break;
            case Devp:
                DEVP_EXCHANGE.get(id).clear();
                break;
            case Barcode:
                BARCODE_EXCHANGE.get(id).clear();
                break;
            case Led:
                LED_EXCHANGE.get(id).clear();
                break;
            case Scale:
                SCALE_EXCHANGE.get(id).clear();
                queue.clear();
                break;
            default:
                break;
        }
    }
    public static boolean hasExchange(SlaveType type, Integer id) {
        return resolveQueue(type, id) != null;
    }
    public static int size(SlaveType type, Integer id) {
        Queue<Task> queue = resolveQueue(type, id);
        return queue == null ? 0 : queue.size();
    }
    private static Queue<Task> resolveQueue(SlaveType type, Integer id) {
        if (type == null || id == null) {
            return null;
        }
        switch (type) {
            case Crn:
                return CRN_EXCHANGE.get(id);
            case DualCrn:
                return DUAL_CRN_EXCHANGE.get(id);
            case Rgv:
                return RGV_EXCHANGE.get(id);
            case Devp:
                return DEVP_EXCHANGE.get(id);
            case Barcode:
                return BARCODE_EXCHANGE.get(id);
            case Led:
                return LED_EXCHANGE.get(id);
            case Scale:
                return SCALE_EXCHANGE.get(id);
            default:
                return null;
        }
    }
}