modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/util/ConnectionsView.java [130:262]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        if (!scheduler.isShutdown()) {
            scheduler.shutdownNow();
        }
    }

    private void initCounters(AtomicInteger[] counters) {
        for (int i = 0; i < counters.length; i++) {
            if (counters[i] == null) {
                counters[i] = new AtomicInteger(0);
            } else {
                counters[i].set(0);
            }
        }
    }

    protected void connected() {
        activeConnections.incrementAndGet();
        shortTermOpenedConnections.incrementAndGet();
        longTermOpenedConnections.incrementAndGet();
    }

    protected void disconnected() {
        activeConnections.decrementAndGet();
    }

    protected void notifyMessageSize(long size, boolean isRequest) {
        // This logic gets executed for each and every transaction. For a typical
        // mediation scenario this method will be called 4 times. Therefore I'm using
        // arrays of integers to keep the overhead down to a minimum. Since the number
        // of buckets is 6, this can be easily managed without using a slow data structure
        // like a HashMap. This approach guarantees O(1) complexity.

        AtomicInteger[] counters = isRequest ? requestSizeCounters : responseSizeCounters;

        if (size < 1024) {
            counters[LESS_THAN_1K].incrementAndGet();
        } else if (size < 10240) {
            counters[LESS_THAN_10K].incrementAndGet();
        } else if (size < 102400) {
            counters[LESS_THAN_100K].incrementAndGet();
        } else if (size < 1048576) {
            counters[LESS_THAN_1M].incrementAndGet();
        } else if (size < 10485760) {
            counters[LESS_THAN_10M].incrementAndGet();
        } else {
            counters[GREATER_THAN_10M].incrementAndGet();
        }
    }

    @Override
    public int getActiveConnections() {
        return activeConnections.get();
    }

    @Override
    public int getLastMinuteConnections() {
        return getTotalConnections(1);
    }

    @Override
    public int getLast5MinuteConnections() {
        return getTotalConnections(5);
    }

    @Override
    public int getLast15MinuteConnections() {
        return getTotalConnections(15);
    }

    @Override
    public int getLastHourConnections() {
        return getTotalConnectionsByHour(1);
    }

    @Override
    public int getLast8HourConnections() {
        return getTotalConnectionsByHour(8);
    }

    @Override
    public int getLast24HourConnections() {
        return getTotalConnectionsByHour(24);
    }

    @Override
    public Map getRequestSizesMap() {
        return getCountersMap(requestSizeCounters);
    }

    @Override
    public Map getResponseSizesMap() {
        return getCountersMap(responseSizeCounters);
    }

    @Override
    public Date getLastResetTime() {
        return resetTime;
    }

    private Map<String,Integer> getCountersMap(AtomicInteger[] counters) {
        // This ensures that keys are returned in the same order we insert them
        // Provides better readability in the JMX consoles
        Map<String,Integer> map = new LinkedHashMap<String,Integer>();
        map.put("< 1 K", counters[LESS_THAN_1K].get());
        map.put("< 10 K", counters[LESS_THAN_10K].get());
        map.put("< 100 K", counters[LESS_THAN_100K].get());
        map.put("< 1 M", counters[LESS_THAN_1M].get());
        map.put("< 10 M", counters[LESS_THAN_10M].get());
        map.put("> 10 M", counters[GREATER_THAN_10M].get());
        return map;
    }

    @Override
    public void reset() {
        initCounters(requestSizeCounters);
        initCounters(responseSizeCounters);
        shortTermDataQueue.clear();
        longTermDataQueue.clear();
        resetTime = Calendar.getInstance().getTime();
    }

    /**
     * Return the number of total connections opened during last 'n' munites
     * of execution
     *
     * @param n Number of minutes in the execution history
     * @return The number of connections opened
     */
    private int getTotalConnections(int n) {
        int sum = 0;
        Integer[] array = shortTermDataQueue.toArray(new Integer[shortTermDataQueue.size()]);

        if (n > array.length) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/jmx/ConnectionsView.java [123:255]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        if (!scheduler.isShutdown()) {
            scheduler.shutdownNow();
        }
    }

    private void initCounters(AtomicInteger[] counters) {
        for (int i = 0; i < counters.length; i++) {
            if (counters[i] == null) {
                counters[i] = new AtomicInteger(0);
            } else {
                counters[i].set(0);
            }
        }
    }

    protected void connected() {
        activeConnections.incrementAndGet();
        shortTermOpenedConnections.incrementAndGet();
        longTermOpenedConnections.incrementAndGet();
    }

    protected void disconnected() {
        activeConnections.decrementAndGet();
    }

    protected void notifyMessageSize(long size, boolean isRequest) {
        // This logic gets executed for each and every transaction. For a typical
        // mediation scenario this method will be called 4 times. Therefore I'm using
        // arrays of integers to keep the overhead down to a minimum. Since the number
        // of buckets is 6, this can be easily managed without using a slow data structure
        // like a HashMap. This approach guarantees O(1) complexity.

        AtomicInteger[] counters = isRequest ? requestSizeCounters : responseSizeCounters;

        if (size < 1024) {
            counters[LESS_THAN_1K].incrementAndGet();
        } else if (size < 10240) {
            counters[LESS_THAN_10K].incrementAndGet();
        } else if (size < 102400) {
            counters[LESS_THAN_100K].incrementAndGet();
        } else if (size < 1048576) {
            counters[LESS_THAN_1M].incrementAndGet();
        } else if (size < 10485760) {
            counters[LESS_THAN_10M].incrementAndGet();
        } else {
            counters[GREATER_THAN_10M].incrementAndGet();
        }
    }

    @Override
    public int getActiveConnections() {
        return activeConnections.get();
    }

    @Override
    public int getLastMinuteConnections() {
        return getTotalConnections(1);
    }

    @Override
    public int getLast5MinuteConnections() {
        return getTotalConnections(5);
    }

    @Override
    public int getLast15MinuteConnections() {
        return getTotalConnections(15);
    }

    @Override
    public int getLastHourConnections() {
        return getTotalConnectionsByHour(1);
    }

    @Override
    public int getLast8HourConnections() {
        return getTotalConnectionsByHour(8);
    }

    @Override
    public int getLast24HourConnections() {
        return getTotalConnectionsByHour(24);
    }

    @Override
    public Map getRequestSizesMap() {
        return getCountersMap(requestSizeCounters);
    }

    @Override
    public Map getResponseSizesMap() {
        return getCountersMap(responseSizeCounters);
    }

    @Override
    public Date getLastResetTime() {
        return resetTime;
    }

    private Map<String,Integer> getCountersMap(AtomicInteger[] counters) {
        // This ensures that keys are returned in the same order we insert them
        // Provides better readability in the JMX consoles
        Map<String,Integer> map = new LinkedHashMap<String,Integer>();
        map.put("< 1 K", counters[LESS_THAN_1K].get());
        map.put("< 10 K", counters[LESS_THAN_10K].get());
        map.put("< 100 K", counters[LESS_THAN_100K].get());
        map.put("< 1 M", counters[LESS_THAN_1M].get());
        map.put("< 10 M", counters[LESS_THAN_10M].get());
        map.put("> 10 M", counters[GREATER_THAN_10M].get());
        return map;
    }

    @Override
    public void reset() {
        initCounters(requestSizeCounters);
        initCounters(responseSizeCounters);
        shortTermDataQueue.clear();
        longTermDataQueue.clear();
        resetTime = Calendar.getInstance().getTime();
    }

    /**
     * Return the number of total connections opened during last 'n' minutes
     * of execution
     *
     * @param n Number of minutes in the execution history
     * @return The number of connections opened
     */
    private int getTotalConnections(int n) {
        int sum = 0;
        Integer[] array = shortTermDataQueue.toArray(new Integer[shortTermDataQueue.size()]);

        if (n > array.length) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



