org.apache.mina.filter.statistic

## Class ProfilerTimerFilter

- java.lang.Object
- - org.apache.mina.core.filterchain.IoFilterAdapter
  - - org.apache.mina.filter.statistic.ProfilerTimerFilter

- All Implemented Interfaces:
    IoFilter

      public class ProfilerTimerFilter
      extends IoFilterAdapter

  This class will measure the time it takes for a method in the `IoFilterAdapter` class to execute. The basic premise of the logic in this class is to get the current time at the beginning of the method, call method on nextFilter, and then get the current time again. An example of how to use the filter is:

       ProfilerTimerFilter profiler = new ProfilerTimerFilter(
               TimeUnit.MILLISECOND, IoEventType.MESSAGE_RECEIVED);
       chain.addFirst("Profiler", profiler);

  The profiled `IoEventType` are :
  - IoEventType.MESSAGE_RECEIVED
  - IoEventType.MESSAGE_SENT
  - IoEventType.SESSION_CREATED
  - IoEventType.SESSION_OPENED
  - IoEventType.SESSION_IDLE
  - IoEventType.SESSION_CLOSED
  Author:
    Apache MINA Project

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.mina.core.filterchain.IoFilter

      `IoFilter.NextFilter`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProfilerTimerFilter()` Creates a new instance of ProfilerFilter.
    `ProfilerTimerFilter(TimeUnit timeUnit)` Creates a new instance of ProfilerFilter.
    `ProfilerTimerFilter(TimeUnit timeUnit, IoEventType... eventTypes)` Creates a new instance of ProfilerFilter.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `double` | `getAverageTime(IoEventType type)` Get the average time for the specified method represented by the `IoEventType`
    `Set<IoEventType>` | `getEventsToProfile()` Return the set of `IoEventType` which are profiled.
    `long` | `getMaximumTime(IoEventType type)` The maximum time the method represented by `IoEventType` has executed
    `long` | `getMinimumTime(IoEventType type)` The minimum time the method represented by `IoEventType` has executed
    `long` | `getTotalCalls(IoEventType type)` Gets the total number of times the method has been called that is represented by the `IoEventType`
    `long` | `getTotalTime(IoEventType type)` The total time this method has been executing
    `void` | `messageReceived(IoFilter.NextFilter nextFilter, IoSession session, Object message)` Profile a MessageReceived event.
    `void` | `messageSent(IoFilter.NextFilter nextFilter, IoSession session, WriteRequest writeRequest)` Profile a MessageSent event.
    `void` | `profile(IoEventType type)` Set the `IoEventType` to be profiled
    `void` | `sessionClosed(IoFilter.NextFilter nextFilter, IoSession session)` Profile a SessionClosed event.
    `void` | `sessionCreated(IoFilter.NextFilter nextFilter, IoSession session)` Profile a SessionCreated event.
    `void` | `sessionIdle(IoFilter.NextFilter nextFilter, IoSession session, IdleStatus status)` Profile a SessionIdle event.
    `void` | `sessionOpened(IoFilter.NextFilter nextFilter, IoSession session)` Profile a SessionOpened event.
    `void` | `setEventsToProfile(IoEventType... eventTypes)` Set the profilers for a list of `IoEventType`
    `void` | `setTimeUnit(TimeUnit timeUnit)` Sets the `TimeUnit` being used.
    `void` | `stopProfile(IoEventType type)` Stop profiling an `IoEventType`

    - ### Methods inherited from class org.apache.mina.core.filterchain.IoFilterAdapter

      `destroy, exceptionCaught, filterClose, filterWrite, init, onPostAdd, onPostRemove, onPreAdd, onPreRemove, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### ProfilerTimerFilter

          public ProfilerTimerFilter()

      Creates a new instance of ProfilerFilter. This is the default constructor and will print out timings for messageReceived and messageSent and the time increment will be in milliseconds.

    - #### ProfilerTimerFilter

          public ProfilerTimerFilter(TimeUnit timeUnit)

      Creates a new instance of ProfilerFilter. This is the default constructor and will print out timings for messageReceived and messageSent.
      Parameters:
        `timeUnit` - the time increment to set

    - #### ProfilerTimerFilter

          public ProfilerTimerFilter(TimeUnit timeUnit,
                             IoEventType... eventTypes)

      Creates a new instance of ProfilerFilter. An example of this call would be:

           new ProfilerTimerFilter(
                   TimeUnit.MILLISECONDS,
                   IoEventType.MESSAGE_RECEIVED, IoEventType.MESSAGE_SENT);

      Note : you can add as many `IoEventType` as you want. The method accepts a variable number of arguments.
      Parameters:
        `timeUnit` - Used to determine the level of precision you need in your timing.
        `eventTypes` - A list of `IoEventType` representation of the methods to profile

  - ### Method Detail

    - #### setTimeUnit

          public void setTimeUnit(TimeUnit timeUnit)

      Sets the `TimeUnit` being used.
      Parameters:
        `timeUnit` - the new `TimeUnit` to be used.

    - #### profile

          public void profile(IoEventType type)

      Set the `IoEventType` to be profiled
      Parameters:
        `type` - The `IoEventType` to profile

    - #### stopProfile

          public void stopProfile(IoEventType type)

      Stop profiling an `IoEventType`
      Parameters:
        `type` - The `IoEventType` to stop profiling

    - #### getEventsToProfile

          public Set<IoEventType> getEventsToProfile()

      Return the set of `IoEventType` which are profiled.
      Returns:
        a Set containing all the profiled `IoEventType`

    - #### setEventsToProfile

          public void setEventsToProfile(IoEventType... eventTypes)

      Set the profilers for a list of `IoEventType`
      Parameters:
        `eventTypes` - the list of `IoEventType` to profile

    - #### messageReceived

          public void messageReceived(IoFilter.NextFilter nextFilter,
                             IoSession session,
                             Object message)
                               throws Exception

      Profile a MessageReceived event. This method will gather the following informations : - the method duration - the shortest execution time - the slowest execution time - the average execution time - the global number of calls
      Specified by:
        `messageReceived` in interface `IoFilter`
      Overrides:
        `messageReceived` in class `IoFilterAdapter`
      Parameters:
        `nextFilter` - The filter to call next
        `session` - The associated session
        `message` - the received message
      Throws:
        `Exception`

    - #### messageSent

          public void messageSent(IoFilter.NextFilter nextFilter,
                         IoSession session,
                         WriteRequest writeRequest)
                           throws Exception

      Profile a MessageSent event. This method will gather the following informations : - the method duration - the shortest execution time - the slowest execution time - the average execution time - the global number of calls
      Specified by:
        `messageSent` in interface `IoFilter`
      Overrides:
        `messageSent` in class `IoFilterAdapter`
      Parameters:
        `nextFilter` - The filter to call next
        `session` - The associated session
        `writeRequest` - the sent message
      Throws:
        `Exception`

    - #### sessionCreated

          public void sessionCreated(IoFilter.NextFilter nextFilter,
                            IoSession session)
                              throws Exception

      Profile a SessionCreated event. This method will gather the following informations : - the method duration - the shortest execution time - the slowest execution time - the average execution time - the global number of calls
      Specified by:
        `sessionCreated` in interface `IoFilter`
      Overrides:
        `sessionCreated` in class `IoFilterAdapter`
      Parameters:
        `nextFilter` - The filter to call next
        `session` - The associated session
      Throws:
        `Exception`

    - #### sessionOpened

          public void sessionOpened(IoFilter.NextFilter nextFilter,
                           IoSession session)
                             throws Exception

      Profile a SessionOpened event. This method will gather the following informations : - the method duration - the shortest execution time - the slowest execution time - the average execution time - the global number of calls
      Specified by:
        `sessionOpened` in interface `IoFilter`
      Overrides:
        `sessionOpened` in class `IoFilterAdapter`
      Parameters:
        `nextFilter` - The filter to call next
        `session` - The associated session
      Throws:
        `Exception`

    - #### sessionIdle

          public void sessionIdle(IoFilter.NextFilter nextFilter,
                         IoSession session,
                         IdleStatus status)
                           throws Exception

      Profile a SessionIdle event. This method will gather the following informations : - the method duration - the shortest execution time - the slowest execution time - the average execution time - the global number of calls
      Specified by:
        `sessionIdle` in interface `IoFilter`
      Overrides:
        `sessionIdle` in class `IoFilterAdapter`
      Parameters:
        `nextFilter` - The filter to call next
        `session` - The associated session
        `status` - The session's status
      Throws:
        `Exception`

    - #### sessionClosed

          public void sessionClosed(IoFilter.NextFilter nextFilter,
                           IoSession session)
                             throws Exception

      Profile a SessionClosed event. This method will gather the following informations : - the method duration - the shortest execution time - the slowest execution time - the average execution time - the global number of calls
      Specified by:
        `sessionClosed` in interface `IoFilter`
      Overrides:
        `sessionClosed` in class `IoFilterAdapter`
      Parameters:
        `nextFilter` - The filter to call next
        `session` - The associated session
      Throws:
        `Exception`

    - #### getAverageTime

          public double getAverageTime(IoEventType type)

      Get the average time for the specified method represented by the `IoEventType`
      Parameters:
        `type` - The `IoEventType` that the user wants to get the average method call time
      Returns:
        The average time it took to execute the method represented by the `IoEventType`

    - #### getTotalCalls

          public long getTotalCalls(IoEventType type)

      Gets the total number of times the method has been called that is represented by the `IoEventType`
      Parameters:
        `type` - The `IoEventType` that the user wants to get the total number of method calls
      Returns:
        The total number of method calls for the method represented by the `IoEventType`

    - #### getTotalTime

          public long getTotalTime(IoEventType type)

      The total time this method has been executing
      Parameters:
        `type` - The `IoEventType` that the user wants to get the total time this method has been executing
      Returns:
        The total time for the method represented by the `IoEventType`

    - #### getMinimumTime

          public long getMinimumTime(IoEventType type)

      The minimum time the method represented by `IoEventType` has executed
      Parameters:
        `type` - The `IoEventType` that the user wants to get the minimum time this method has executed
      Returns:
        The minimum time this method has executed represented by the `IoEventType`

    - #### getMaximumTime

          public long getMaximumTime(IoEventType type)

      The maximum time the method represented by `IoEventType` has executed
      Parameters:
        `type` - The `IoEventType` that the user wants to get the maximum time this method has executed
      Returns:
        The maximum time this method has executed represented by the `IoEventType`

Copyright © 2004-2012 Apache MINA Project. All Rights Reserved.