/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.bbg.livedata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.threeten.bp.Instant;
import com.opengamma.livedata.server.LiveDataServerMBean;
/**
* JMX management of a {@link BloombergLiveDataServer}
*/
public class BloombergLiveDataServerMBean extends LiveDataServerMBean {
/** Logger. */
private static final Logger s_logger = LoggerFactory.getLogger(BloombergLiveDataServerMBean.class);
private final BloombergLiveDataServer _server;
public BloombergLiveDataServerMBean(BloombergLiveDataServer server) {
super(server);
_server = server;
}
@ManagedAttribute(description = "Get the limit on concurrent subscriptions")
public long getSubscriptionLimit() {
try {
return _server.getSubscriptionLimit();
} catch (RuntimeException e) {
s_logger.error("getConnectionStatus() failed", e);
throw new RuntimeException(e.getMessage());
}
}
@ManagedAttribute(description = "Set the limit on concurrent subscriptions")
public void setSubscriptionLimit(long subscriptionLimit) {
try {
_server.setSubscriptionLimit(subscriptionLimit);
} catch (RuntimeException e) {
s_logger.error("getConnectionStatus() failed", e);
throw new RuntimeException(e.getMessage());
}
}
@ManagedAttribute()
public long getLastLimitRejectionEpochSeconds() {
RejectedDueToSubscriptionLimitEvent rejection = _server.getLastLimitRejection();
if (rejection == null) {
return 0;
} else {
return rejection.getInstant().getEpochSecond();
}
}
@ManagedAttribute()
public long getLastLimitSecondsSince() {
RejectedDueToSubscriptionLimitEvent rejection = _server.getLastLimitRejection();
if (rejection == null) {
return Long.MAX_VALUE;
} else {
return Instant.now().getEpochSecond() - rejection.getInstant().getEpochSecond();
}
}
@ManagedAttribute()
public String getLastLimitRejectionTime() {
RejectedDueToSubscriptionLimitEvent rejection = _server.getLastLimitRejection();
if (rejection == null) {
return null;
} else {
return rejection.getInstant().toString();
}
}
@ManagedAttribute()
public int getLastLimitRequestSize() {
RejectedDueToSubscriptionLimitEvent rejection = _server.getLastLimitRejection();
if (rejection == null) {
return -1;
} else {
return rejection.getRequestedSubscriptions();
}
}
@ManagedAttribute()
public int getLastLimitRequiredEntitlement() {
RejectedDueToSubscriptionLimitEvent rejection = _server.getLastLimitRejection();
if (rejection == null) {
return -1;
} else {
return rejection.getAfterSubscriptionCount();
}
}
}