/**
* 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.zookeeper.server;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import org.apache.zookeeper.Version;
import org.apache.zookeeper.jmx.ZKMBeanInfo;
/**
* This class implements the ZooKeeper server MBean interface.
*/
public class ZooKeeperServerBean implements ZooKeeperServerMXBean, ZKMBeanInfo {
private final Date startTime;
private final String name;
protected final ZooKeeperServer zks;
public ZooKeeperServerBean(ZooKeeperServer zks) {
startTime = new Date();
this.zks = zks;
name = "StandaloneServer_port" + zks.getClientPort();
}
public String getClientPort() {
try {
return InetAddress.getLocalHost().getHostAddress() + ":"
+ zks.getClientPort();
} catch (UnknownHostException e) {
return "localhost:" + zks.getClientPort();
}
}
public String getName() {
return name;
}
public boolean isHidden() {
return false;
}
public String getStartTime() {
return startTime.toString();
}
public String getVersion() {
return Version.getFullVersion();
}
public long getAvgRequestLatency() {
return zks.serverStats().getAvgLatency();
}
public long getMaxRequestLatency() {
return zks.serverStats().getMaxLatency();
}
public long getMinRequestLatency() {
return zks.serverStats().getMinLatency();
}
public long getOutstandingRequests() {
return zks.serverStats().getOutstandingRequests();
}
public int getTickTime() {
return zks.getTickTime();
}
public void setTickTime(int tickTime) {
zks.setTickTime(tickTime);
}
public int getMaxClientCnxnsPerHost() {
ServerCnxnFactory fac = zks.getServerCnxnFactory();
if (fac == null) {
return -1;
}
return fac.getMaxClientCnxnsPerHost();
}
public void setMaxClientCnxnsPerHost(int max) {
// if fac is null the exception will be propagated to the client
zks.getServerCnxnFactory().setMaxClientCnxnsPerHost(max);
}
public int getMinSessionTimeout() {
return zks.getMinSessionTimeout();
}
public void setMinSessionTimeout(int min) {
zks.setMinSessionTimeout(min);
}
public int getMaxSessionTimeout() {
return zks.getMaxSessionTimeout();
}
public void setMaxSessionTimeout(int max) {
zks.setMaxSessionTimeout(max);
}
public long getPacketsReceived() {
return zks.serverStats().getPacketsReceived();
}
public long getPacketsSent() {
return zks.serverStats().getPacketsSent();
}
public void resetLatency() {
zks.serverStats().resetLatency();
}
public void resetMaxLatency() {
zks.serverStats().resetMaxLatency();
}
public void resetStatistics() {
ServerStats serverStats = zks.serverStats();
serverStats.resetRequestCounters();
serverStats.resetLatency();
}
public long getNumAliveConnections() {
return zks.getNumAliveConnections();
}
}