org.apache.mina.filter.statistic
Class ProfilerTimerFilter

java.lang.Object
  extended by org.apache.mina.core.filterchain.IoFilterAdapter
      extended by 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 :

Author:
Apache MINA Project

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.apache.mina.core.filterchain.IoFilter
IoFilter.NextFilter
 
Constructor Summary
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
 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-2011 Apache MINA Project. All Rights Reserved.