Package org.apache.storm.messaging

## Interface IContext

- All Known Implementing Classes:
    `Context`, `Context`

      public interface IContext

  This interface needs to be implemented for messaging plugin.

  Messaging plugin is specified via Storm config parameter, storm.messaging.transport.

  A messaging plugin should have a default constructor and implements IContext interface. Upon construction, we will invoke IContext::prepare(topoConf) to enable context to be configured according to storm configuration.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `IConnection` | `bind​(String stormId, int port, IConnectionCallback cb, Supplier<Object> newConnectionResponse)` | This method establishes a server side connection.
    `IConnection` | `connect​(String stormId, String host, int port, AtomicBoolean[] remoteBpStatus)` | This method establish a client side connection to a remote server implementation should return a new connection every call.
    `void` | `prepare​(Map<String,​Object> topoConf)` | Deprecated.
    `default void` | `prepare​(Map<String,​Object> topoConf, StormMetricRegistry metricRegistry)` | This method is invoked at the startup of messaging plugin.
    `void` | `term()` | This method is invoked when a worker is unloading a messaging plugin.

- - ### Method Detail

    - #### prepare

          @Deprecated
          void prepare​(Map<String,​Object> topoConf)

      Deprecated.
      This method is invoked at the startup of messaging plugin.
      Parameters:
        `topoConf` - storm configuration

    - #### prepare

          default void prepare​(Map<String,​Object> topoConf,
                               StormMetricRegistry metricRegistry)

      This method is invoked at the startup of messaging plugin.
      Parameters:
        `topoConf` - storm configuration
        `metricRegistry` - storm metric registry

    - #### term

          void term()

      This method is invoked when a worker is unloading a messaging plugin.

    - #### bind

          IConnection bind​(String stormId,
                           int port,
                           IConnectionCallback cb,
                           Supplier<Object> newConnectionResponse)

      This method establishes a server side connection.
      Parameters:
        `stormId` - topology ID
        `port` - port #
        `cb` - The callback to deliver received messages to
        `newConnectionResponse` - Supplier of the initial message to send to new client connections. If authentication is required, the message will be sent after authentication is complete.
      Returns:
        server side connection

    - #### connect

          IConnection connect​(String stormId,
                              String host,
                              int port,
                              AtomicBoolean[] remoteBpStatus)

      This method establish a client side connection to a remote server implementation should return a new connection every call.
      Parameters:
        `stormId` - topology ID
        `host` - remote host
        `port` - remote port
        `remoteBpStatus` - array of booleans reflecting Back Pressure status of remote tasks.
      Returns:
        client side connection