/*
* 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.internal.cache.tier.sockets;
import org.apache.geode.distributed.DistributedMember;
/**
* Status of HARegionQueue on server when the client is sonnecting/reconnecting. This holds the
* information abt HARegionQueue and this gets populated as a response of Handshake to server. This
* wrapper object is used to hold the various info retrurned from Handshake. such as endpoint type
* and queue size.
*
* @since GemFire 5.5
*
*/
public class ServerQueueStatus {
/** queueSize of HARegionQueue for this client */
private int qSize = 0;
/** Endpoint type for this endpoint */
private byte epType = (byte) 0;
private DistributedMember memberId = null;
/** size of the PDX registry on the server. Currently only set for gateways */
private int pdxSize = 0;
/**
* Default constructor Called when connectionsPerServer=0
*/
public ServerQueueStatus(DistributedMember memberId) {
this((byte) 0, 0, memberId);
}
/**
* Constructor Called when connectionsPerServer is nto equal to 0
*
* @param epType
* @param qSize
*/
public ServerQueueStatus(byte epType, int qSize, DistributedMember memberId) {
this.qSize = qSize;
this.epType = epType;
this.memberId = memberId;
}
/**
* returns true if the endpoint is primary
*
* @return epType
*/
public boolean isPrimary() {
return this.epType == (byte) 2;
}
/**
* returns true if the endpoint is redundant
*
* @return epType
*/
public boolean isRedundant() {
return this.epType == (byte) 1;
}
/**
* returns true if the endpoint is Non redundant
*
* @return epType
*/
public boolean isNonRedundant() {
return this.epType == (byte) 0;
}
/**
* returns qSize of the HARegionQueue for this client
*
* @return qSize
*/
public int getServerQueueSize() {
return this.qSize;
}
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append("ServerQueueStatus [").append("qSize=").append(this.qSize).append("; epType=")
.append(getTypeAsString()).append("]");
return buffer.toString();
}
protected String getTypeAsString() {
String type = null;
if (isNonRedundant()) {
type = "NON_REDUNDANT";
} else if (isRedundant()) {
type = "REDUNDANT";
} else {
type = "PRIMARY";
}
return type;
}
public int getPdxSize() {
return pdxSize;
}
public void setPdxSize(int pdxSize) {
this.pdxSize = pdxSize;
}
/**
* The member id of the server we connected to.
*
* @return the memberid
*/
public DistributedMember getMemberId() {
return this.memberId;
}
}