2 * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowjava.statistics;
11 import java.util.concurrent.ConcurrentHashMap;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
20 public final class StatisticsCounters {
22 private static StatisticsCounters instanceHolder;
23 private static final Logger LOGGER = LoggerFactory.getLogger(StatisticsCounters.class);
25 private final Counter cntDSEncodeFail;
26 private final Counter cntDSEncodeSuccess;
27 private final Counter cntDSEnteredOFJava;
28 private final Counter cntUSDecodeFail;
29 private final Counter cntUSDecodeSuccess;
30 private final Counter cntUSMessagePass;
31 private final Counter cntUSReceivedOFJava;
32 //private Map<CounterEventTypes,Counter> countersMap;
34 public static StatisticsCounters getInstance(){
35 if (instanceHolder == null){
36 instanceHolder = new StatisticsCounters();
38 return instanceHolder;
41 private StatisticsCounters() {
42 cntDSEncodeFail = new Counter();
43 cntDSEncodeSuccess = new Counter();
44 cntDSEnteredOFJava = new Counter();
45 cntUSDecodeFail = new Counter();
46 cntUSDecodeSuccess = new Counter();
47 cntUSMessagePass = new Counter();
48 cntUSReceivedOFJava = new Counter();
49 LOGGER.debug("StaticsCounters (without Map) has been created");
50 // countersMap = new ConcurrentHashMap<>();
51 // countersMap.put(CounterEventTypes.DS_ENCODE_FAIL, new Counter());
52 // countersMap.put(CounterEventTypes.DS_ENCODE_SUCCESS, new Counter());
53 // countersMap.put(CounterEventTypes.DS_ENTERED_OFJAVA, new Counter());
54 // countersMap.put(CounterEventTypes.US_DECODE_FAIL, new Counter());
55 // countersMap.put(CounterEventTypes.US_DECODE_SUCCESS, new Counter());
56 // countersMap.put(CounterEventTypes.US_MESSAGE_PASS, new Counter());
57 // countersMap.put(CounterEventTypes.US_RECEIVED_IN_OFJAVA, new Counter());
58 // LOGGER.debug("StaticsCounters (with Map) has been created");
63 * @param counterEventKey - key to identify counter
66 public Counter getCounter(CounterEventTypes counterEventKey){
67 if(counterEventKey == null){
68 throw new IllegalArgumentException("counterEventKey can not be null");
70 switch (counterEventKey){
72 return cntDSEncodeFail;
73 case DS_ENCODE_SUCCESS:
74 return cntDSEncodeSuccess;
75 case DS_ENTERED_OFJAVA:
76 return cntDSEnteredOFJava;
78 return cntUSDecodeFail;
79 case US_DECODE_SUCCESS:
80 return cntUSDecodeSuccess;
82 return cntUSMessagePass;
83 case US_RECEIVED_IN_OFJAVA:
84 return cntUSReceivedOFJava;
86 throw new IllegalArgumentException("unknown counterEventKey");
88 // return countersMap.get(counterEventKey);
92 * Increment value of given counter
93 * @param counterEventKey - key to identify counter
96 public void incrementCounter(CounterEventTypes counterEventKey){
97 getCounter(counterEventKey).incrementCounter();
101 * Set values of all counter to 0 (zero)
103 public void resetCounters(){
104 cntDSEncodeFail.reset(); ;
105 cntDSEncodeSuccess.reset();
106 cntDSEnteredOFJava.reset();
107 cntUSDecodeFail.reset();
108 cntUSDecodeSuccess.reset();
109 cntUSMessagePass.reset();
110 cntUSReceivedOFJava.reset();
111 // countersMap.get(CounterEventTypes.DS_ENCODE_FAIL).reset();
112 // countersMap.get(CounterEventTypes.DS_ENCODE_SUCCESS).reset();
113 // countersMap.get(CounterEventTypes.DS_ENTERED_OFJAVA).reset();
114 // countersMap.get(CounterEventTypes.US_DECODE_FAIL).reset();
115 // countersMap.get(CounterEventTypes.US_DECODE_SUCCESS).reset();
116 // countersMap.get(CounterEventTypes.US_MESSAGE_PASS).reset();
117 // countersMap.get(CounterEventTypes.US_RECEIVED_IN_OFJAVA).reset();
118 LOGGER.debug("StaticsCounters has been reset");