import java.util.Map;
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
-/**
- * Created by Martin Bobak <mbobak@cisco.com> on 5.6.2015.
- */
-public class SessionStatistics {
+public final class SessionStatistics {
+
+ private SessionStatistics() {
+ }
private static final Map<String, Map<ConnectionStatus, EventCounter>> SESSION_EVENTS = new HashMap<>();
private static EventCounter getConnectionEvent(final Map<ConnectionStatus, EventCounter> sessionsConnectionEvents,
final ConnectionStatus connectionStatus) {
- EventCounter eventCounter = sessionsConnectionEvents.get(connectionStatus);
- if (null == eventCounter) {
- eventCounter = new EventCounter();
- sessionsConnectionEvents.put(connectionStatus, eventCounter);
- }
- return eventCounter;
+ return sessionsConnectionEvents.computeIfAbsent(connectionStatus, k -> new EventCounter());
}
private static Map<ConnectionStatus, EventCounter> getConnectionEvents(final String sessionId) {
- Map<ConnectionStatus, EventCounter> sessionConnectionEvents = SESSION_EVENTS.get(sessionId);
- if (null == sessionConnectionEvents) {
- sessionConnectionEvents = new HashMap<>();
- SESSION_EVENTS.put(sessionId, sessionConnectionEvents);
- }
- return sessionConnectionEvents;
+ return SESSION_EVENTS.computeIfAbsent(sessionId, k -> new HashMap<>());
}
Map<ConnectionStatus, EventCounter> sessionEvents = sessionEntries.getValue();
dump.add(String.format("SESSION : %s", sessionEntries.getKey()));
for (Map.Entry<ConnectionStatus, EventCounter> sessionEvent : sessionEvents.entrySet()) {
- dump.add(String.format(" %s : %d", sessionEvent.getKey().toString(), sessionEvent.getValue().getCount()));
+ dump.add(String.format(" %s : %d", sessionEvent.getKey().toString(),
+ sessionEvent.getValue().getCount()));
}
}
return dump;
}
public enum ConnectionStatus {
- CONNECTION_CREATED, CONNECTION_DISCONNECTED_BY_DEVICE, CONNECTION_DISCONNECTED_BY_OFP;
+ CONNECTION_CREATED, CONNECTION_DISCONNECTED_BY_DEVICE, CONNECTION_DISCONNECTED_BY_OFP
}
private static final class EventCounter {
- private final AtomicLongFieldUpdater<EventCounter> updater = AtomicLongFieldUpdater.newUpdater(EventCounter.class, "count");
+ private final AtomicLongFieldUpdater<EventCounter> updater =
+ AtomicLongFieldUpdater.newUpdater(EventCounter.class, "count");
private volatile long count;
public long getCount() {