Class 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.
    • Field Detail

      • _filterName

        protected final java.lang.String _filterName
      • _context

        protected transient javax.servlet.ServletContext _context
      • _id

        protected final java.lang.String _id
      • _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()
      • valueBound

        public void valueBound​(javax.servlet.http.HttpSessionBindingEvent event)
        Specified by:
        valueBound in interface javax.servlet.http.HttpSessionBindingListener
      • valueUnbound

        public void valueUnbound​(javax.servlet.http.HttpSessionBindingEvent event)
        Specified by:
        valueUnbound in interface javax.servlet.http.HttpSessionBindingListener
      • sessionWillPassivate

        public void sessionWillPassivate​(javax.servlet.http.HttpSessionEvent se)
        Specified by:
        sessionWillPassivate in interface javax.servlet.http.HttpSessionActivationListener
      • sessionDidActivate

        public void sessionDidActivate​(javax.servlet.http.HttpSessionEvent se)
        Specified by:
        sessionDidActivate in interface javax.servlet.http.HttpSessionActivationListener
      • setContext

        public void setContext​(javax.servlet.ServletContext context)
      • removeFromRateTrackers

        protected void removeFromRateTrackers​(DoSFilter filter,
                                              java.lang.String id)
      • run

        public void run()
        Specified by:
        run in interface java.lang.Runnable
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object