Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2015. Rick Hightower, Geoff Chandler
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *  		http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  *
  * QBit - The Microservice lib for Java : JSON, WebSocket, REST. Be The Web!
  */
 
 package io.advantageous.qbit.metrics;
 
 
 import java.util.Map;
Stat Service Impl
 
 @Service("statService")
     private final StatRecorder recorder;
     private final StatReplicator replica;
     private final Timer timer;
     private final String serviceId;
     private final ServiceDiscovery serviceDiscovery;
     private final int sizeOfMaps;
     private final Logger logger = LoggerFactory.getLogger(StatServiceImpl.class);
     private final boolean debug = . || .isDebugEnabled();
     private final int timeToLiveCheckInterval;
     private long lastProcess = 0;
     private long lastHealthCheck = 0;
     private long now;
     private long startMinute;
 
 
     public StatServiceImpl(final StatRecorder recorder,
                            final StatReplicator replica,
                            final Timer timer,
                            final ServiceDiscovery serviceDiscovery,
                            final String serviceId,
                            final int numStats,
                            final int timeToLiveCheckInterval) {
 
         this. = serviceId;
         this. = serviceDiscovery;
         this. = recorder;
         this. = new ConcurrentHashMap<>(numStats);
         this. = new ConcurrentHashMap<>(numStats);
         this. = timer;
         this. = numStats;
          = timer.now();
          = ;
         this. = replica;
         this. = timeToLiveCheckInterval;
 
 
     }
 
 
     public void recordCount(String nameint count) {
         recordCountWithTime(namecount);
     }
 
 
     public void recordLevel(String nameint count) {
         recordCountWithTime(namecount);
     }
 
     public void recordTiming(String nameint duration) {
         recordTimingWithTime(nameduration);
     }
 
     public void increment(String name) {
         recordCountWithTime(name, 1, );
     }
 
    public void incrementAll(final String... names) {
        for (String name : names) {
            increment(name);
        }
    }
    public Stats statsForLastSeconds(String nameint secondCount) {return oneMinuteOfStats(name).statsForLastSeconds(secondCount);}
    public int averageLastLevel(String nameint secondCount) {return oneMinuteOfStats(name).averageLastLevel(secondCount);}
    public int currentMinuteCount(String name) {
        return oneMinuteOfStats(name).getTotalCount();
    }
    public int lastTenSecondCount(String name) {
        return oneMinuteOfStats(name).countLastTenSeconds();
    }
    public int lastFiveSecondCount(String name) {
        return oneMinuteOfStats(name).countLastFiveSeconds();
    }
    public int lastNSecondsCount(String nameint secondCount) {
        return oneMinuteOfStats(name).countLastSeconds(secondCount);
    }
    public int lastNSecondsCountExact(String nameint secondCount) {
        int count = oneMinuteOfStats(name).countLastSeconds(secondCount);
        int count2 = lastOneMinuteOfStats(name).countLastSeconds(secondCount);
        return count + count2;
    }
    public int lastTenSecondCountExact(String name) {
        return oneMinuteOfStats(name).countLastTenSeconds() +
                lastOneMinuteOfStats(name).countLastTenSeconds();
    }
    public int lastFiveSecondCountExact(String name) {
        return oneMinuteOfStats(name).countLastFiveSeconds() +
                lastOneMinuteOfStats(name).countLastTenSeconds();
    }
    public int currentSecondCount(String name) {
        return oneMinuteOfStats(name).countThisSecond();
    }
    public int lastSecondCount(String name) {
        return oneMinuteOfStats(name).countLastSecond();
    }
    public void recordCountWithTime(String nameint countlong now) {
        oneMinuteOfStats(name).changeBy(countnow);
        .replicateCount(namecountnow);
    }
    public void recordTimingWithTime(String nameint durationlong now) {
        oneMinuteOfStats(name).recordLevel(durationnow);
        .replicateTiming(namedurationnow);
    }
    public void recordLevelWithTime(String nameint levellong now) {
        oneMinuteOfStats(name).recordLevel(levelnow);
        .replicateLevel(namelevelnow);
    }
    public void replicateCount(String nameint countlong time) {
        oneMinuteOfStats(name).changeBy(counttime);
    }
    public void replicateLevel(String nameint levellong time) {
        oneMinuteOfStats(name).recordLevel(leveltime);
    }
    public void recordAll(final long timestamp,
                          final String[] names,
                          final int[] counts) {
        for (int index = 0; index < names.lengthindex++) {
            String name = names[index];
            int count = counts[index];
            recordCountWithTime(namecounttimestamp);
        }
    }
    public void recordAllWithTimes(
            final String[] names,
            final int[] counts,
            final long[] times) {
        for (int index = 0; index < names.lengthindex++) {
            String name = names[index];
            int count = counts[index];
            long now = times[index];
            recordCountWithTime(namecountnow);
        }
    }
    private MinuteStat oneMinuteOfStats(String name) {
        MinuteStat oneMinuteOfStats = this..get(name);
        if (oneMinuteOfStats == null) {
            oneMinuteOfStats = new MinuteStat(name);
            this..put(nameoneMinuteOfStats);
        }
        return oneMinuteOfStats;
    }
    private MinuteStat lastOneMinuteOfStats(String name) {
        MinuteStat oneMinuteOfStats = this..get(name);
        if (oneMinuteOfStats == null) {
            oneMinuteOfStats = new MinuteStat(name);
            this..put(nameoneMinuteOfStats);
        }
        return oneMinuteOfStats;
    }
    public void queueLimit() {
        process();
    }
    public void queueEmpty() {
        process();
    }
    public void tick() {
         = .now();
    }
    void process() {
        tick();
        long duration =  - ;
        if (duration > 50) {
            flushMinuteCheck();
            flushReplicas();
        }
        if ( != null) {
            heathCheck();
        }
    }
    private void heathCheck() {
        long duration =  - ;
        if (duration > ) {
             = ;
            .checkInOk();
        }
    }
    private void flushReplicas() {
        ServiceProxyUtils.flushServiceProxy();
        .flush();
    }
    private void flushMinuteCheck() {
        long duration = ( - ) / 1_000;
        if (duration > 60) {
            if (.debug("One minute of stats");
             = ;
            final ArrayList<MinuteStatstats = new ArrayList<>(this..values());
            this..record(stats);
            this. = ;
            this. = new ConcurrentHashMap<>();
        }
    }
    public int lastMinuteCount(String name) {
        return lastOneMinuteOfStats(name).getTotalCount();
    }
    @Override
    public void servicePoolChanged(String serviceName) {
        if ( instanceof ServiceChangedEventChannel) {
            ((ServiceChangedEventChannel).servicePoolChanged(serviceName);
        }
    }
New to GrepCode? Check out our FAQ X