001 /* 002 * CDDL HEADER START 003 * 004 * The contents of this file are subject to the terms of the 005 * Common Development and Distribution License, Version 1.0 only 006 * (the "License"). You may not use this file except in compliance 007 * with the License. 008 * 009 * You can obtain a copy of the license at 010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE 011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE. 012 * See the License for the specific language governing permissions 013 * and limitations under the License. 014 * 015 * When distributing Covered Code, include this CDDL HEADER in each 016 * file and include the License file at 017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, 018 * add the following below this CDDL HEADER, with the fields enclosed 019 * by brackets "[]" replaced with your own identifying information: 020 * Portions Copyright [yyyy] [name of copyright owner] 021 * 022 * CDDL HEADER END 023 * 024 * 025 * Copyright 2006-2008 Sun Microsystems, Inc. 026 */ 027 package org.opends.server.types; 028 import org.opends.messages.Message; 029 030 031 032 import static org.opends.messages.CoreMessages.*; 033 034 035 036 /** 037 * This enumeration defines the set of possible reasons for the 038 * closure of a connection between a client and the Directory Server. 039 */ 040 @org.opends.server.types.PublicAPI( 041 stability=org.opends.server.types.StabilityLevel.VOLATILE, 042 mayInstantiate=false, 043 mayExtend=false, 044 mayInvoke=true) 045 public enum DisconnectReason 046 { 047 /** 048 * The disconnect reason that indicates that the client connection 049 * was closed because the client unbind from the server. 050 */ 051 UNBIND( 052 INFO_DISCONNECT_DUE_TO_UNBIND.get()), 053 054 055 056 /** 057 * The disconnect reason that indicates that the client connection 058 * was closed because the client disconnected without unbinding. 059 */ 060 CLIENT_DISCONNECT( 061 INFO_DISCONNECT_DUE_TO_CLIENT_CLOSURE.get()), 062 063 064 065 /** 066 * The disconnect reason that indicates that the client connection 067 * was closed because the client connection was rejected. 068 */ 069 CONNECTION_REJECTED( 070 INFO_DISCONNECT_DUE_TO_REJECTED_CLIENT.get()), 071 072 073 074 /** 075 * The disconnect reason that indicates that the client connection 076 * was closed because of an I/O error. 077 */ 078 IO_ERROR( 079 INFO_DISCONNECT_DUE_TO_IO_ERROR.get()), 080 081 082 083 /** 084 * The disconnect reason that indicates that the client connection 085 * was closed because of a protocol error. 086 */ 087 PROTOCOL_ERROR( 088 INFO_DISCONNECT_DUE_TO_PROTOCOL_ERROR.get()), 089 090 091 092 /** 093 * The disconnect reason that indicates that the client connection 094 * was closed because the Directory Server shut down. 095 */ 096 SERVER_SHUTDOWN( 097 INFO_DISCONNECT_DUE_TO_SERVER_SHUTDOWN.get()), 098 099 100 101 /** 102 * The disconnect reason that indicates that the client connection 103 * was closed because an administrator terminated the connection. 104 */ 105 ADMIN_DISCONNECT( 106 INFO_DISCONNECT_BY_ADMINISTRATOR.get()), 107 108 109 110 /** 111 * The disconnect reason that indicates that the client connection 112 * was closed because of a security problem. 113 */ 114 SECURITY_PROBLEM( 115 INFO_DISCONNECT_DUE_TO_SECURITY_PROBLEM.get()), 116 117 118 119 /** 120 * The disconnect reason that indicates that the client connection 121 * was closed because the maximum allowed request size was exceeded. 122 */ 123 MAX_REQUEST_SIZE_EXCEEDED( 124 INFO_DISCONNECT_DUE_TO_MAX_REQUEST_SIZE.get()), 125 126 127 128 /** 129 * The disconnect reason that indicates that the client connection 130 * was closed because an administrative limit was exceeded. 131 */ 132 ADMIN_LIMIT_EXCEEDED( 133 INFO_DISCONNECT_DUE_TO_ADMIN_LIMIT.get()), 134 135 136 137 /** 138 * The disconnect reason that indicates that the client connection 139 * was closed because the idle time limit was exceeded. 140 */ 141 IDLE_TIME_LIMIT_EXCEEDED( 142 INFO_DISCONNECT_DUE_TO_IDLE_TIME_LIMIT.get()), 143 144 145 146 /** 147 * The disconnect reason that indicates that the client connection 148 * was closed because of an I/O timeout. 149 */ 150 IO_TIMEOUT( 151 INFO_DISCONNECT_DUE_TO_IO_TIMEOUT.get()), 152 153 154 155 /** 156 * The disconnect reason that indicates that the client connection 157 * was closed because of an internal error within the server. 158 */ 159 SERVER_ERROR( 160 INFO_DISCONNECT_DUE_TO_SERVER_ERROR.get()), 161 162 163 164 /** 165 * The disconnect reason that indicates that the client connection 166 * was closed by a plugin. 167 */ 168 CLOSED_BY_PLUGIN( 169 INFO_DISCONNECT_BY_PLUGIN.get()), 170 171 172 173 /** 174 * The disconnect reason that indicates that the client connection 175 * was closed for some other reason. 176 */ 177 OTHER( 178 INFO_DISCONNECT_OTHER.get()); 179 180 181 182 // The disconnect reason. 183 private Message message; 184 185 186 /** 187 * Creates a new disconnect reason element with the provided closure 188 * message. 189 * 190 * @param message The message for this disconnect reason. 191 */ 192 private DisconnectReason(Message message) 193 { 194 this.message = message; 195 } 196 197 198 199 /** 200 * Retrieves the human-readable disconnect reason. 201 * 202 * @return The human-readable disconnect reason. 203 */ 204 public Message getClosureMessage() 205 { 206 return message; 207 } 208 209 210 211 /** 212 * Retrieves a string representation of this disconnect reason. 213 * 214 * @return A string representation of this disconnect reason. 215 */ 216 public String toString() 217 { 218 return message.toString(); 219 } 220 } 221