scopeeventlistenerimpl.java
来自「oscache-2.4.1-full」· Java 代码 · 共 148 行
JAVA
148 行
/*
* Copyright (c) 2002-2003 by OpenSymphony
* All rights reserved.
*/
package com.opensymphony.oscache.extra;
import com.opensymphony.oscache.base.events.ScopeEvent;
import com.opensymphony.oscache.base.events.ScopeEventListener;
import com.opensymphony.oscache.base.events.ScopeEventType;
/**
* Implementation of a ScopeEventListener that keeps track of the scope flush events.
* We are not using any synchronized so that this does not become a bottleneck.
* The consequence is that on retrieving values, the operations that are
* currently being done won't be counted.
*
* @version $Revision: 254 $
* @author <a href="mailto:abergevin@pyxis-tech.com">Alain Bergevin</a>
*/
public class ScopeEventListenerImpl implements ScopeEventListener {
/**
* Scope names
*/
public static final String[] SCOPE_NAMES = {
null, "page", "request", "session", "application"
};
/**
* Number of known scopes
*/
public static final int NB_SCOPES = SCOPE_NAMES.length - 1;
/**
* Page scope number
*/
public static final int PAGE_SCOPE = 1;
/**
* Request scope number
*/
public static final int REQUEST_SCOPE = 2;
/**
* Session scope number
*/
public static final int SESSION_SCOPE = 3;
/**
* Application scope number
*/
public static final int APPLICATION_SCOPE = 4;
/**
* Flush counter for all scopes.
* Add one to the number of scope because the array is being used
* from position 1 instead of 0 for convenience
*/
private int[] scopeFlushCount = new int[NB_SCOPES + 1];
public ScopeEventListenerImpl() {
}
/**
* Gets the flush count for scope {@link ScopeEventListenerImpl#APPLICATION_SCOPE}.
* <p>
* @return The total number of application flush
*/
public int getApplicationScopeFlushCount() {
return scopeFlushCount[APPLICATION_SCOPE];
}
/**
* Gets the flush count for scope {@link ScopeEventListenerImpl#PAGE_SCOPE}.
* @return The total number of page flush
*/
public int getPageScopeFlushCount() {
return scopeFlushCount[PAGE_SCOPE];
}
/**
* Gets the flush count for scope {@link ScopeEventListenerImpl#REQUEST_SCOPE}.
* @return The total number of request flush
*/
public int getRequestScopeFlushCount() {
return scopeFlushCount[REQUEST_SCOPE];
}
/**
* Gets the flush count for scope {@link ScopeEventListenerImpl#SESSION_SCOPE}.
* @return The total number of session flush
*/
public int getSessionScopeFlushCount() {
return scopeFlushCount[SESSION_SCOPE];
}
/**
* Returns the total flush count.
* @return The total number of scope flush
*/
public int getTotalScopeFlushCount() {
int total = 0;
for (int count = 1; count <= NB_SCOPES; count++) {
total += scopeFlushCount[count];
}
return total;
}
/**
* Handles all the scope flush events.
* @param event The scope event
*/
public void scopeFlushed(ScopeEvent event) {
// Get the event type and process it
ScopeEventType eventType = event.getEventType();
if (eventType == ScopeEventType.ALL_SCOPES_FLUSHED) {
// All 4 scopes were flushed, increment the counters
for (int count = 1; count <= NB_SCOPES; count++) {
scopeFlushCount[count]++;
}
} else if (eventType == ScopeEventType.SCOPE_FLUSHED) {
// Get back the scope from the event and increment the flush count
scopeFlushCount[event.getScope()]++;
} else {
// Unknown event!
throw new IllegalArgumentException("Unknown Scope Event type received");
}
}
/**
* Returns all the flush counter in a string form.
*/
public String toString() {
StringBuffer returnString = new StringBuffer("Flush count for ");
for (int count = 1; count <= NB_SCOPES; count++) {
returnString.append("scope " + SCOPE_NAMES[count] + " = " + scopeFlushCount[count] + ", ");
}
// Remove the last 2 chars, which are ", "
returnString.setLength(returnString.length() - 2);
return returnString.toString();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?