001    /**
002     * Copyright (C) 2012 FuseSource, Inc.
003     * http://fusesource.com
004     *
005     * Licensed under the Apache License, Version 2.0 (the "License");
006     * you may not use this file except in compliance with the License.
007     * You may obtain a copy of the License at
008     *
009     *    http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    
018    package org.fusesource.hawtdispatch;
019    
020    /**
021     * <p>
022     * </p>
023     *
024     * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
025     */
026    public class Metrics {
027    
028        /**
029         * The dispatch queue associated with the metrics collected.
030         */
031        public DispatchQueue queue;
032    
033        /**
034         * The number of runnable tasks queued.
035         */
036        public long enqueued;
037    
038        /**
039         * The number of runnable tasks that have been removed from the queue
040         * and executed.
041         */
042        public long dequeued;
043    
044        /**
045         * The longest amount of time at runnable task spent waiting in
046         * the queue.
047         */
048        public long maxWaitTimeNS;
049    
050        /**
051         * The long amount of time a runnable task spent executing in nanoseconds.
052         */
053        public long maxRunTimeNS;
054    
055        /**
056         * The sum of all the time spent executing tasks in nanoseconds.
057         */
058        public long totalRunTimeNS;
059    
060        /**
061         * The sum of all the time that tasks spent waiting in the queue in nanoseconds.
062         */
063        public long totalWaitTimeNS;
064    
065        @Override
066        public String toString() {
067            return String.format("{ label:%s, enqueued:%d, dequeued:%d, max_wait_time:%.2f ms, max_run_time:%.2f ms, total_run_time:%.2f ms, total_wait_time:%.2f ms }",
068                    queue.getLabel(),
069                    enqueued,
070                    dequeued,
071                    maxWaitTimeNS / 1000000.0f,
072                    maxRunTimeNS / 1000000.0f,
073                    totalRunTimeNS / 1000000.0f,
074                    totalWaitTimeNS / 1000000.0f);
075        }
076    }