/* * 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.ignite.spi.communication.tcp; import org.apache.ignite.mxbean.MXBeanDescription; import org.apache.ignite.spi.IgniteSpiManagementMBean; /** * MBean provide access to TCP-based communication SPI. */ @MXBeanDescription("MBean provide access to TCP-based communication SPI.") public interface TcpCommunicationSpiMBean extends IgniteSpiManagementMBean { /** * Gets local host address for socket binding. * Beside loopback address physical node could have * several other ones, but only one is assigned to grid node. * * @return Grid node IP address. */ @MXBeanDescription("Grid node IP address.") public String getLocalAddress(); /** * Gets local port for socket binding. * * @return Port number. */ @MXBeanDescription("Port number.") public int getLocalPort(); /** * Returns {@code true} if {@code TcpCommunicationSpi} should * maintain connection for outgoing and incoming messages separately. * In this case total number of connections between local and some remote node * is {@link #getConnectionsPerNode()} * 2. * <p> * Returns {@code false} if each connection of {@link #getConnectionsPerNode()} * should be used for outgoing and incoming messages. * <p> * Default is {@code false}. * * @return {@code true} to use paired connections and {@code false} otherwise. * @see #getConnectionsPerNode() */ @MXBeanDescription("Paired connections used.") public boolean isUsePairedConnections(); /** * Gets number of connections to each remote node. if {@link #isUsePairedConnections()} * is {@code true} then number of connections is doubled and half is used for incoming and * half for outgoing messages. * * @return Number of connections per node. * @see #isUsePairedConnections() */ @MXBeanDescription("Connections per node.") public int getConnectionsPerNode(); /** * Gets local port for shared memory communication. * * @return Port number. */ @MXBeanDescription("Shared memory endpoint port number.") public int getSharedMemoryPort(); /** * Gets maximum number of local ports tried if all previously * tried ports are occupied. * * @return Local port range. */ @MXBeanDescription("Local port range.") public int getLocalPortRange(); /** * Gets maximum idle connection time upon which idle connections * will be closed. * * @return Maximum idle connection time. */ @MXBeanDescription("Maximum idle connection time.") public long getIdleConnectionTimeout(); /** * Gets flag that indicates whether direct or heap allocated buffer is used. * * @return Flag that indicates whether direct or heap allocated buffer is used. */ @MXBeanDescription("Flag that indicates whether direct or heap allocated buffer is used.") public boolean isDirectBuffer(); /** * Gets count of selectors used in TCP server. Default value equals to the * number of CPUs available in the system. * * @return Count of selectors in TCP server. */ @MXBeanDescription("Count of selectors used in TCP server.") public int getSelectorsCount(); /** * Gets sent messages count. * * @return Sent messages count. */ @MXBeanDescription("Sent messages count.") public int getSentMessagesCount(); /** * Gets sent bytes count. * * @return Sent bytes count. */ @MXBeanDescription("Sent bytes count.") public long getSentBytesCount(); /** * Gets received messages count. * * @return Received messages count. */ @MXBeanDescription("Received messages count.") public int getReceivedMessagesCount(); /** * Gets received bytes count. * * @return Received bytes count. */ @MXBeanDescription("Received bytes count.") public long getReceivedBytesCount(); /** * Gets outbound messages queue size. * * @return Outbound messages queue size. */ @MXBeanDescription("Outbound messages queue size.") public int getOutboundMessagesQueueSize(); /** * Gets connect timeout used when establishing connection * with remote nodes. * * @return Connect timeout. */ @MXBeanDescription("Connect timeout.") public long getConnectTimeout(); /** * Gets maximum connect timeout. * * @return Maximum connect timeout. */ @MXBeanDescription("Maximum connect timeout.") public long getMaxConnectTimeout(); /** * Gets maximum number of reconnect attempts used when establishing connection * with remote nodes. * * @return Reconnects count. */ @MXBeanDescription("Reconnect count on connection failure.") public int getReconnectCount(); /** * Defines how many non-blocking {@code selector.selectNow()} should be made before * falling into {@code selector.select(long)} in NIO server. Long value. Default is {@code 0}. * Can be set to {@code Long.MAX_VALUE} so selector threads will never block. * * @return Selector thread busy-loop iterations. */ @MXBeanDescription("Selector thread busy-loop iterations.") public long getSelectorSpins(); /** * Gets value for {@code TCP_NODELAY} socket option. * * @return {@code True} if TCP delay is disabled. */ @MXBeanDescription("TCP_NODELAY socket option value.") public boolean isTcpNoDelay(); /** * Gets flag defining whether direct send buffer should be used. * * @return {@code True} if direct buffers should be used. */ @MXBeanDescription("Direct send buffer.") public boolean isDirectSendBuffer(); /** * Gets receive buffer size for sockets created or accepted by this SPI. * <p> * If not provided, default is {@link TcpCommunicationSpi#DFLT_SOCK_BUF_SIZE}. * * @return Socket receive buffer size. */ @MXBeanDescription("Socket receive buffer.") public int getSocketReceiveBuffer(); /** * Gets send buffer size for sockets created or accepted by this SPI. * <p> * If not provided, default is {@link TcpCommunicationSpi#DFLT_SOCK_BUF_SIZE}. * * @return Socket send buffer size. */ @MXBeanDescription("Socket send buffer.") public int getSocketSendBuffer(); /** * Gets message queue limit for incoming and outgoing messages. * * @return Send queue size limit. */ @MXBeanDescription("Message queue size limit.") public int getMessageQueueLimit(); /** * Gets socket write timeout for TCP connections. If message can not be written to * socket within this time then connection is closed and reconnect is attempted. * * @return Socket write timeout for TCP connections. */ @MXBeanDescription("Socket write timeout.") public long getSocketWriteTimeout(); /** * Gets number of received messages per connection to node after which acknowledgment message is sent. * * @return Number of received messages after which acknowledgment is sent. */ @MXBeanDescription("Number of received messages after which acknowledgment is sent.") public int getAckSendThreshold(); /** * Gets maximum number of stored unacknowledged messages per connection to node. * If number of unacknowledged messages exceeds this number then connection to node is * closed and reconnect is attempted. * * @return Maximum number of unacknowledged messages. */ @MXBeanDescription("Maximum number of unacknowledged messages.") public int getUnacknowledgedMessagesBufferSize(); /** * Gets slow client queue limit. * <p/> * When set to a positive number, communication SPI will monitor clients outbound queue sizes and will drop * those clients whose queue exceeded this limit. * * @return Slow client queue limit. */ @MXBeanDescription("Slow client queue limit.") public int getSlowClientQueueLimit(); /** * Dumps SPI per-connection stats to logs. */ @MXBeanDescription("Dumps SPI statistics to logs.") public void dumpStats(); }