Class 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
    • 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.
      • 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 - If an error occurred while processing the event
      • 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 - If an error occurred while processing the event
      • 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 - If an error occurred while processing the event
      • 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 - If an error occurred while processing the event
      • 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 - If an error occurred while processing the event
      • 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 - If an error occurred while processing the event
      • 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