/* | |
* Copyright 2013 gitblit.com. | |
* | |
* Licensed 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 com.gitblit.fanout; | |
import java.io.Serializable; | |
import java.text.MessageFormat; | |
import java.util.Date; | |
/** | |
* Encapsulates the runtime stats of a fanout service. | |
* | |
* @author James Moger | |
* | |
*/ | |
public class FanoutStats implements Serializable { | |
private static final long serialVersionUID = 1L; | |
public long concurrentConnectionLimit; | |
public boolean allowAllChannelAnnouncements; | |
public boolean strictRequestTermination; | |
public Date bootDate; | |
public long rejectedConnectionCount; | |
public int peakConnectionCount; | |
public long currentChannels; | |
public long currentSubscriptions; | |
public long currentConnections; | |
public long totalConnections; | |
public long totalAnnouncements; | |
public long totalMessages; | |
public long totalSubscribes; | |
public long totalUnsubscribes; | |
public long totalPings; | |
public String info() { | |
int i = 0; | |
StringBuilder sb = new StringBuilder(); | |
sb.append(infoStr(i++, "boot date")); | |
sb.append(infoStr(i++, "strict request termination")); | |
sb.append(infoStr(i++, "allow connection \"all\" announcements")); | |
sb.append(infoInt(i++, "concurrent connection limit")); | |
sb.append(infoInt(i++, "concurrent limit rejected connections")); | |
sb.append(infoInt(i++, "peak connections")); | |
sb.append(infoInt(i++, "current connections")); | |
sb.append(infoInt(i++, "current channels")); | |
sb.append(infoInt(i++, "current subscriptions")); | |
sb.append(infoInt(i++, "user-requested subscriptions")); | |
sb.append(infoInt(i++, "total connections")); | |
sb.append(infoInt(i++, "total announcements")); | |
sb.append(infoInt(i++, "total messages")); | |
sb.append(infoInt(i++, "total subscribes")); | |
sb.append(infoInt(i++, "total unsubscribes")); | |
sb.append(infoInt(i++, "total pings")); | |
String template = sb.toString(); | |
String info = MessageFormat.format(template, | |
bootDate.toString(), | |
Boolean.toString(strictRequestTermination), | |
Boolean.toString(allowAllChannelAnnouncements), | |
concurrentConnectionLimit, | |
rejectedConnectionCount, | |
peakConnectionCount, | |
currentConnections, | |
currentChannels, | |
currentSubscriptions, | |
currentSubscriptions == 0 ? 0 : (currentSubscriptions - currentConnections), | |
totalConnections, | |
totalAnnouncements, | |
totalMessages, | |
totalSubscribes, | |
totalUnsubscribes, | |
totalPings); | |
return info; | |
} | |
private String infoStr(int index, String label) { | |
return label + ": {" + index + "}\n"; | |
} | |
private String infoInt(int index, String label) { | |
return label + ": {" + index + ",number,0}\n"; | |
} | |
} |