Package org.eclipse.jetty.servlets
Class DoSFilter.RateTracker
- java.lang.Object
-
- org.eclipse.jetty.servlets.DoSFilter.RateTracker
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Runnable
,java.util.EventListener
,javax.servlet.http.HttpSessionActivationListener
,javax.servlet.http.HttpSessionBindingListener
- Direct Known Subclasses:
DoSFilter.FixedRateTracker
- Enclosing class:
- DoSFilter
static class DoSFilter.RateTracker extends java.lang.Object implements java.lang.Runnable, javax.servlet.http.HttpSessionBindingListener, javax.servlet.http.HttpSessionActivationListener, java.io.Serializable
A RateTracker is associated with a connection, and stores request rate data.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
DoSFilter.RateTracker.Overage
-
Field Summary
Fields Modifier and Type Field Description protected javax.servlet.ServletContext
_context
protected java.lang.String
_filterName
protected java.lang.String
_id
protected int
_maxRequestsPerSecond
protected int
_next
protected long[]
_timestamps
protected DoSFilter.RateType
_type
private static long
serialVersionUID
-
Constructor Summary
Constructors Constructor Description RateTracker(javax.servlet.ServletContext context, java.lang.String filterName, java.lang.String id, DoSFilter.RateType type, int maxRequestsPerSecond)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addToRateTrackers(DoSFilter filter, DoSFilter.RateTracker tracker)
java.lang.String
getId()
DoSFilter.RateType
getType()
DoSFilter.OverLimit
isRateExceeded(long now)
protected void
removeFromRateTrackers(DoSFilter filter, java.lang.String id)
void
run()
void
sessionDidActivate(javax.servlet.http.HttpSessionEvent se)
void
sessionWillPassivate(javax.servlet.http.HttpSessionEvent se)
void
setContext(javax.servlet.ServletContext context)
java.lang.String
toString()
void
valueBound(javax.servlet.http.HttpSessionBindingEvent event)
void
valueUnbound(javax.servlet.http.HttpSessionBindingEvent event)
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
_filterName
protected final java.lang.String _filterName
-
_context
protected transient javax.servlet.ServletContext _context
-
_id
protected final java.lang.String _id
-
_type
protected final DoSFilter.RateType _type
-
_maxRequestsPerSecond
protected final int _maxRequestsPerSecond
-
_timestamps
protected final long[] _timestamps
-
_next
protected int _next
-
-
Constructor Detail
-
RateTracker
public RateTracker(javax.servlet.ServletContext context, java.lang.String filterName, java.lang.String id, DoSFilter.RateType type, int maxRequestsPerSecond)
-
-
Method Detail
-
isRateExceeded
public DoSFilter.OverLimit isRateExceeded(long now)
- Parameters:
now
- the time now (in nanoseconds) used to calculate elapsed time since previous requests.- Returns:
- the current calculated request rate over the last second if rate exceeded, else null.
-
getId
public java.lang.String getId()
-
getType
public DoSFilter.RateType getType()
-
valueBound
public void valueBound(javax.servlet.http.HttpSessionBindingEvent event)
- Specified by:
valueBound
in interfacejavax.servlet.http.HttpSessionBindingListener
-
valueUnbound
public void valueUnbound(javax.servlet.http.HttpSessionBindingEvent event)
- Specified by:
valueUnbound
in interfacejavax.servlet.http.HttpSessionBindingListener
-
sessionWillPassivate
public void sessionWillPassivate(javax.servlet.http.HttpSessionEvent se)
- Specified by:
sessionWillPassivate
in interfacejavax.servlet.http.HttpSessionActivationListener
-
sessionDidActivate
public void sessionDidActivate(javax.servlet.http.HttpSessionEvent se)
- Specified by:
sessionDidActivate
in interfacejavax.servlet.http.HttpSessionActivationListener
-
setContext
public void setContext(javax.servlet.ServletContext context)
-
removeFromRateTrackers
protected void removeFromRateTrackers(DoSFilter filter, java.lang.String id)
-
addToRateTrackers
private void addToRateTrackers(DoSFilter filter, DoSFilter.RateTracker tracker)
-
run
public void run()
- Specified by:
run
in interfacejava.lang.Runnable
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-