Package org.apache.storm.multilang

## Interface ISerializer

- All Superinterfaces:
    `Serializable`
  All Known Implementing Classes:
    `JsonSerializer`

      public interface ISerializer
      extends Serializable

  The ISerializer interface describes the methods that an object should implement to provide serialization and de-serialization capabilities to non-JVM language components.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Number` | `connect​(Map<String,​Object> conf, TopologyContext context)` | This method transmits the Storm config to the non-JVM process and receives its pid.
    `void` | `initialize​(OutputStream processIn, InputStream processOut)` | This method sets the input and output streams of the serializer.
    `ShellMsg` | `readShellMsg()` | This method receives a shell message from the non-JVM process.
    `void` | `writeBoltMsg​(BoltMsg msg)` | This method sends a bolt message to a non-JVM bolt process.
    `void` | `writeSpoutMsg​(SpoutMsg msg)` | This method sends a spout message to a non-JVM spout process.
    `void` | `writeTaskIds​(List<Integer> taskIds)` | This method sends a list of task IDs to a non-JVM bolt process.

- - ### Method Detail

    - #### initialize

          void initialize​(OutputStream processIn,
                          InputStream processOut)

      This method sets the input and output streams of the serializer.
      Parameters:
        `processIn` - output stream to non-JVM component
        `processOut` - input stream from non-JVM component

    - #### connect

          Number connect​(Map<String,​Object> conf,
                         TopologyContext context)
                  throws IOException,
                         NoOutputException

      This method transmits the Storm config to the non-JVM process and receives its pid.
      Parameters:
        `conf` - storm configuration
        `context` - topology context
      Returns:
        process pid
      Throws:
        `IOException`
        `NoOutputException`

    - #### readShellMsg

          ShellMsg readShellMsg()
                         throws IOException,
                                NoOutputException

      This method receives a shell message from the non-JVM process.
      Returns:
        shell message
      Throws:
        `IOException`
        `NoOutputException`

    - #### writeBoltMsg

          void writeBoltMsg​(BoltMsg msg)
                     throws IOException

      This method sends a bolt message to a non-JVM bolt process.
      Parameters:
        `msg` - bolt message
      Throws:
        `IOException`

    - #### writeSpoutMsg

          void writeSpoutMsg​(SpoutMsg msg)
                      throws IOException

      This method sends a spout message to a non-JVM spout process.
      Parameters:
        `msg` - spout message
      Throws:
        `IOException`

    - #### writeTaskIds

          void writeTaskIds​(List<Integer> taskIds)
                     throws IOException

      This method sends a list of task IDs to a non-JVM bolt process.
      Parameters:
        `taskIds` - list of task IDs
      Throws:
        `IOException`