package org.infinispan.server.core.transport;
import org.infinispan.factories.scopes.Scope;
import org.infinispan.factories.scopes.Scopes;
import org.infinispan.jmx.annotations.DataType;
import org.infinispan.jmx.annotations.DisplayType;
import org.infinispan.jmx.annotations.MBean;
import org.infinispan.jmx.annotations.ManagedAttribute;
import org.infinispan.jmx.annotations.MeasurementType;
/**
* Server transport abstraction
*
* @author Galder ZamarreƱo
* @since 5.1
*/
@Scope(Scopes.GLOBAL) // So that annotation parser detects this as a cache manager level component
@MBean(objectName = "Transport",
description = "Transport component manages read and write operations to/from server.")
public interface Transport {
void start();
void stop();
@ManagedAttribute(
description = "Returns the total number of bytes written " +
"by the server back to clients which includes both protocol and user information.",
displayName = "Number of total number of bytes written",
measurementType = MeasurementType.TRENDSUP,
displayType = DisplayType.SUMMARY
)
String getTotalBytesWritten();
@ManagedAttribute(description = "Returns the total number of bytes read " +
"by the server from clients which includes both protocol and user information.",
displayName = "Number of total number of bytes read",
measurementType = MeasurementType.TRENDSUP,
displayType = DisplayType.SUMMARY
)
String getTotalBytesRead();
@ManagedAttribute(
description = "Returns the host to which the transport binds.",
displayName = "Host name",
dataType = DataType.TRAIT,
displayType = DisplayType.SUMMARY)
String getHostName();
@ManagedAttribute(
description = "Returns the port to which the transport binds.",
displayName = "Port",
dataType = DataType.TRAIT,
displayType = DisplayType.SUMMARY
)
Integer getPort();
@ManagedAttribute(
description = "Returns the number of worker threads.",
displayName = "Number of worker threads",
dataType = DataType.TRAIT,
displayType = DisplayType.SUMMARY
)
String getNumberWorkerThreads();
@ManagedAttribute(
description = "Returns the idle timeout.",
displayName = "Idle timeout",
dataType = DataType.TRAIT,
displayType = DisplayType.SUMMARY
)
String getIdleTimeout();
@ManagedAttribute(
description = "Returns whether TCP no delay was configured or not.",
displayName = "TCP no delay",
dataType = DataType.TRAIT,
displayType = DisplayType.SUMMARY
)
String getTcpNoDelay();
@ManagedAttribute(
description = "Returns the send buffer size.",
displayName = "Send buffer size",
dataType = DataType.TRAIT,
displayType = DisplayType.SUMMARY
)
String getSendBufferSize();
@ManagedAttribute(
description = "Returns the receive buffer size.",
displayName = "Receive buffer size",
dataType = DataType.TRAIT,
displayType = DisplayType.SUMMARY
)
String getReceiveBufferSize();
@ManagedAttribute(
description = "Returns a count of active connections this server.",
displayName = "Local active connections",
dataType = DataType.MEASUREMENT, displayType = DisplayType.SUMMARY
)
Integer getNumberOfLocalConnections();
@ManagedAttribute(
description = "Returns a count of active connections in the cluster. " +
"This operation will make remote calls to aggregate results, " +
"so latency might have an impact on the speed of calculation of this attribute.",
displayName = "Cluster-wide number of active connections",
dataType = DataType.MEASUREMENT,
displayType = DisplayType.SUMMARY
)
Integer getNumberOfGlobalConnections();
}