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 }