blob: 6f805b753a2c68729934206323e9522a398d87e0 [file] [log] [blame]
/*
* 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();
}
}