summaryrefslogtreecommitdiffstats
path: root/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/DelayedResponses.java
blob: 953aeefbfd177e5d9cd7a737ce59881e75dfd451 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.proxy;

import java.util.concurrent.DelayQueue;

/**
 * Queue for requests that have no corresponding config in cache and which we are awaiting response from server for
 *
 * @author hmusum
 */
class DelayedResponses {

    private final DelayQueue<DelayedResponse> delayedResponses = new DelayQueue<>();
    private final ConfigProxyStatistics statistics;

    DelayedResponses(ConfigProxyStatistics statistics) {
        this.statistics = statistics;
    }

    void add(DelayedResponse response) {
        delayedResponses.add(response);
        statistics.delayedResponses(delayedResponses.size());
    }

    boolean remove(DelayedResponse response) {
        statistics.decDelayedResponses();
        return delayedResponses.remove(response);
    }

    DelayQueue<DelayedResponse> responses() {
        return delayedResponses;
    }

    int size() {
        return responses().size();
    }

}