| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more contributor license |
| * agreements. See the NOTICE file distributed with this work for additional information regarding |
| * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance with the License. You may obtain a |
| * copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software distributed under the License |
| * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
| * or implied. See the License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package org.apache.geode.distributed; |
| |
| import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID; |
| |
| /** |
| * Class <code>DurableClientAttributes</code> represents durable member attributes. |
| */ |
| public class DurableClientAttributes { |
| |
| private final String poolSeparator = "_gem_"; |
| |
| /** |
| * The durable id of the member. |
| */ |
| private String id; |
| |
| /** |
| * The durable timeout of the client in seconds. The resources of a disconnected durable client |
| * will be cleaned up if the client hasn't reconnected within this time period. |
| */ |
| private int timeout; |
| |
| /** |
| * Durable client associated with pool |
| */ |
| private String poolName; |
| |
| public DurableClientAttributes() {} |
| |
| /** |
| * Constructor. |
| * |
| * @param id The id of the durable client. |
| * @param timeout The timeout period of the durable client. |
| */ |
| public DurableClientAttributes(String id, int timeout) { |
| this.id = id; |
| this.timeout = timeout; |
| this.poolName = null; |
| int pIdx = id.indexOf(poolSeparator); |
| if (pIdx != -1) { |
| this.poolName = id.substring(pIdx + poolSeparator.length()); |
| this.id = id.substring(0, pIdx); |
| } |
| |
| } |
| |
| /** |
| * Returns the durable client's id. |
| * |
| * @return the durable client's id |
| */ |
| public String getId() { |
| if (this.id == null || this.id.isEmpty()) { |
| return this.id; |
| } |
| String pn = ClientProxyMembershipID.getPoolName(); |
| if (pn != null) { |
| this.poolName = pn; |
| } |
| String result = this.id; |
| if (this.poolName != null) { |
| result += poolSeparator + this.poolName; |
| } |
| return result; |
| } |
| |
| /** |
| * Returns the durable client's timeout. |
| * |
| * @return the durable client's timeout |
| */ |
| public int getTimeout() { |
| return this.timeout; |
| } |
| |
| /** |
| * Used to update the timeout when a durable client comes back to a server |
| */ |
| public void updateTimeout(int newValue) { |
| this.timeout = newValue; |
| } |
| |
| public void setPoolName(String poolName) { |
| this.poolName = poolName; |
| } |
| |
| public String getPoolName() { |
| return this.poolName; |
| } |
| |
| @Override |
| public boolean equals(Object other) { |
| if (other == this) |
| return true; |
| if (other == null) |
| return false; |
| if (!(other instanceof DurableClientAttributes)) |
| return false; |
| final DurableClientAttributes that = (DurableClientAttributes) other; |
| |
| if (this.timeout != that.getTimeout()) |
| return false; |
| if (!(this.id != null && this.id.equals(that.id) |
| && ((this.poolName == null && that.poolName == null) |
| || (this.poolName != null && this.poolName.equals(that.poolName))))) |
| return false; |
| |
| return true; |
| } |
| |
| @Override |
| public int hashCode() { |
| int result = 17; |
| final int mult = 37; |
| |
| result = mult * result + this.timeout; |
| result = mult * result + (this.id == null ? 0 : this.getId().hashCode()); |
| |
| return result; |
| } |
| |
| @Override |
| public String toString() { |
| StringBuffer buffer = new StringBuffer(50).append("DurableClientAttributes[id=") |
| .append(this.getId()).append("; timeout=").append(this.timeout).append("]"); |
| return buffer.toString(); |
| } |
| } |