001 /* 002 * Copyright 2014-2015 UnboundID Corp. 003 * All Rights Reserved. 004 */ 005 /* 006 * Copyright (C) 2015 UnboundID Corp. 007 * 008 * This program is free software; you can redistribute it and/or modify 009 * it under the terms of the GNU General Public License (GPLv2 only) 010 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only) 011 * as published by the Free Software Foundation. 012 * 013 * This program is distributed in the hope that it will be useful, 014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 016 * GNU General Public License for more details. 017 * 018 * You should have received a copy of the GNU General Public License 019 * along with this program; if not, see <http://www.gnu.org/licenses>. 020 */ 021 package com.unboundid.ldap.sdk.unboundidds.monitors; 022 023 024 025 import java.io.Serializable; 026 027 import com.unboundid.ldap.sdk.OperationType; 028 import com.unboundid.util.NotMutable; 029 import com.unboundid.util.ThreadSafety; 030 import com.unboundid.util.ThreadSafetyLevel; 031 032 033 034 /** 035 * <BLOCKQUOTE> 036 * <B>NOTE:</B> This class is part of the Commercial Edition of the UnboundID 037 * LDAP SDK for Java. It is not available for use in applications that 038 * include only the Standard Edition of the LDAP SDK, and is not supported for 039 * use in conjunction with non-UnboundID products. 040 * </BLOCKQUOTE> 041 * This class provides a data structure that encapsulates information about a 042 * result code included in the result code monitor entry. 043 */ 044 @NotMutable() 045 @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE) 046 public final class ResultCodeInfo 047 implements Serializable 048 { 049 /** 050 * The serial version UID for this serializable class. 051 */ 052 private static final long serialVersionUID = 1223217954357101681L; 053 054 055 056 // The average response time, in milliseconds, for operations with this result 057 // code. 058 private final double averageResponseTimeMillis; 059 060 // The percent of operations of the associated type with this result code. 061 private final double percent; 062 063 // The sum of all response times, in milliseconds, for operations with this 064 // result code. 065 private final double totalResponseTimeMillis; 066 067 // The integer value for this result code. 068 private final int intValue; 069 070 // The total number of operations of the specified type with this result code. 071 private final long count; 072 073 // The operation type for which this information is maintained, or null if 074 // it applies to all types of operations. 075 private final OperationType operationType; 076 077 // The name for this result code. 078 private final String name; 079 080 081 082 /** 083 * Creates a new result code info object with the provided information. 084 * 085 * @param intValue The integer value for this result code. 086 * @param name The name for this result code. 087 * @param operationType The type of operation to which the 088 * statistics apply. This may be 089 * {@code null} if the statistics apply to 090 * all types of operations. 091 * @param count The total number of operations of the 092 * specified type with this result code. 093 * @param percent The percent of operations of the 094 * specified type with this result code. 095 * @param totalResponseTimeMillis The total response time, in 096 * milliseconds, for all operations of the 097 * specified type with this result code. 098 * @param averageResponseTimeMillis The average response time, in 099 * milliseconds, for operations of the 100 * specified type with this result code. 101 */ 102 ResultCodeInfo(final int intValue, final String name, 103 final OperationType operationType, final long count, 104 final double percent, final double totalResponseTimeMillis, 105 final double averageResponseTimeMillis) 106 { 107 this.intValue = intValue; 108 this.name = name; 109 this.operationType = operationType; 110 this.count = count; 111 this.totalResponseTimeMillis = totalResponseTimeMillis; 112 this.averageResponseTimeMillis = averageResponseTimeMillis; 113 this.percent = percent; 114 } 115 116 117 118 /** 119 * Retrieves the integer value for this result code. 120 * 121 * @return The integer value for this result code. 122 */ 123 public int intValue() 124 { 125 return intValue; 126 } 127 128 129 130 /** 131 * Retrieves the name for this result code. 132 * 133 * @return The name for this result code. 134 */ 135 public String getName() 136 { 137 return name; 138 } 139 140 141 142 /** 143 * Retrieves the type of operation with which the result code statistics are 144 * associated, if appropriate. 145 * 146 * @return The type of operation with which the result code statistics are 147 * associated, or {@code null} if the statistics apply to all types 148 * of operations. 149 */ 150 public OperationType getOperationType() 151 { 152 return operationType; 153 } 154 155 156 157 /** 158 * The total number of operations of the associated type (or of all 159 * operations if the operation type is {@code null}) with this result code. 160 * 161 * @return The total number of operations of the associated type with this 162 * result code. 163 */ 164 public long getCount() 165 { 166 return count; 167 } 168 169 170 171 /** 172 * The percent of operations of the associated type (or of all operations if 173 * the operation type is {@code null}) with this result code. 174 * 175 * @return The percent of operations of the associated type with this result 176 * code. 177 */ 178 public double getPercent() 179 { 180 return percent; 181 } 182 183 184 185 /** 186 * The sum of the response times, in milliseconds, for all operations of the 187 * associated type (or of all operations if the operation type is 188 * {@code null}) with this result code. 189 * 190 * @return The sum of the response times, in milliseconds, for all operations 191 * of the associated type with this result code. 192 */ 193 public double getTotalResponseTimeMillis() 194 { 195 return totalResponseTimeMillis; 196 } 197 198 199 200 /** 201 * The average response time, in milliseconds, for all operations of the 202 * associated type (or of all operations if the operation type is 203 * {@code null}) with this result code. 204 * 205 * @return The average response time, in milliseconds, for all operations of 206 * the associated type with this result code. 207 */ 208 public double getAverageResponseTimeMillis() 209 { 210 return averageResponseTimeMillis; 211 } 212 }