public ConnectionMetrics(InetAddress ip, final OutboundTcpConnectionPool connectionPool)
{
// ipv6 addresses will contain colons, which are invalid in a JMX ObjectName
address = ip.getHostAddress().replaceAll(":", ".");
commandPendingTasks = Metrics.newGauge(new MetricName(GROUP_NAME, TYPE_NAME, "CommandPendingTasks", address), new Gauge<Integer>()
{
public Integer value()
{
return connectionPool.cmdCon.getPendingMessages();
}
});
commandCompletedTasks = Metrics.newGauge(new MetricName(GROUP_NAME, TYPE_NAME, "CommandCompletedTasks", address), new Gauge<Long>()
{
public Long value()
{
return connectionPool.cmdCon.getCompletedMesssages();
}
});
commandDroppedTasks = Metrics.newGauge(new MetricName(GROUP_NAME, TYPE_NAME, "CommandDroppedTasks", address), new Gauge<Long>()
{
public Long value()
{
return connectionPool.cmdCon.getDroppedMessages();
}
});
responsePendingTasks = Metrics.newGauge(new MetricName(GROUP_NAME, TYPE_NAME, "ResponsePendingTasks", address), new Gauge<Integer>()
{
public Integer value()
{
return connectionPool.ackCon.getPendingMessages();
}
});
responseCompletedTasks = Metrics.newGauge(new MetricName(GROUP_NAME, TYPE_NAME, "ResponseCompletedTasks", address), new Gauge<Long>()
{
public Long value()
{
return connectionPool.ackCon.getCompletedMesssages();
}
});
timeouts = Metrics.newMeter(new MetricName(GROUP_NAME, TYPE_NAME, "Timeouts", address), "timeouts", TimeUnit.SECONDS);
}