Package org.apache.ignite.spi.communication

## Interface CommunicationSpi<T>

- All Superinterfaces:
    `IgniteSpi`
  All Known Implementing Classes:
    `org.apache.ignite.spi.communication.tcp.internal.TcpCommunicationConfigInitializer`, `TcpCommunicationSpi`

      public interface CommunicationSpi<T>
      extends IgniteSpi

  Communication SPI is responsible for data exchange between nodes.

  Communication SPI is one of the most important SPI in Ignite. It is used heavily throughout the system and provides means for all data exchanges between nodes, such as internal implementation details and user driven messages.

  Functionality to this SPI is exposed directly in `Ignite` interface:

  - `IgniteMessaging.send(Object, Object)`
  - `IgniteMessaging.send(Object, Collection)`

  Ignite comes with built-in communication SPI implementations:

  - `TcpCommunicationSpi`
  NOTE: this SPI (i.e. methods in this interface) should never be used directly. SPIs provide internal view on the subsystem and is used internally by Ignite kernal. In rare use cases when access to a specific implementation of this SPI is required - an instance of this SPI can be obtained via `Ignite.configuration()` method to check its configuration properties or call other non-SPI methods. Note again that calling methods from this interface on the obtained instance can lead to undefined behavior and explicitly not supported.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `getOutboundMessagesQueueSize()` | Gets outbound messages queue size.
    `long` | `getReceivedBytesCount()` | Gets received bytes count.
    `int` | `getReceivedMessagesCount()` | Gets received messages count.
    `long` | `getSentBytesCount()` | Gets sent bytes count.
    `int` | `getSentMessagesCount()` | Gets sent messages count.
    `void` | `resetMetrics()` | Resets metrics for this SPI instance.
    `void` | `sendMessage​(ClusterNode destNode, T msg)` | Sends given message to destination node.
    `void` | `setListener​(@Nullable CommunicationListener<T> lsnr)` | Set communication listener.

    - ### Methods inherited from interface org.apache.ignite.spi.IgniteSpi

      `getName, getNodeAttributes, onClientDisconnected, onClientReconnected, onContextDestroyed, onContextInitialized, spiStart, spiStop`

- - ### Method Detail

    - #### sendMessage

          void sendMessage​(ClusterNode destNode,
                           T msg)
                    throws IgniteSpiException

      Sends given message to destination node. Note that characteristics of the exchange such as durability, guaranteed delivery or error notification is dependant on SPI implementation.
      Parameters:
        `destNode` - Destination node.
        `msg` - Message to send.
      Throws:
        `IgniteSpiException` - Thrown in case of any error during sending the message. Note that this is not guaranteed that failed communication will result in thrown exception as this is dependant on SPI implementation.

    - #### getSentMessagesCount

          int getSentMessagesCount()

      Gets sent messages count.
      Returns:
        Sent messages count.

    - #### getSentBytesCount

          long getSentBytesCount()

      Gets sent bytes count.
      Returns:
        Sent bytes count.

    - #### getReceivedMessagesCount

          int getReceivedMessagesCount()

      Gets received messages count.
      Returns:
        Received messages count.

    - #### getReceivedBytesCount

          long getReceivedBytesCount()

      Gets received bytes count.
      Returns:
        Received bytes count.

    - #### getOutboundMessagesQueueSize

          int getOutboundMessagesQueueSize()

      Gets outbound messages queue size.
      Returns:
        Outbound messages queue size.

    - #### resetMetrics

          void resetMetrics()

      Resets metrics for this SPI instance.

    - #### setListener

          void setListener​(@Nullable
                           @Nullable CommunicationListener<T> lsnr)

      Set communication listener.
      Parameters:
        `lsnr` - Listener to set or `null` to unset the listener.