Package org.eclipse.net4j.signal

## Class Signal

- java.lang.Object
- - org.eclipse.net4j.signal.Signal

- All Implemented Interfaces:
    `java.lang.Runnable`
  Direct Known Subclasses:
    `SignalActor`, `SignalReactor`

      public abstract class Signal
      extends java.lang.Object
      implements java.lang.Runnable

  Represents a single communications use-case in the scope of a `signal protocol`.
  Author:
    Eike Stepper

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static long` | `NO_TIMEOUT` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Signal​(SignalProtocol<?> protocol, short id)` |
    `Signal​(SignalProtocol<?> protocol, short id, java.lang.String name)` | Both implementation classes of a logical signal must have the same signalID.
    `Signal​(SignalProtocol<?> protocol, java.lang.Enum<?> literal)` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected boolean` | `closeChannelAfterMe()` |
    `protected boolean` | `closeInputStreamAfterMe()` |
    `protected boolean` | `closeOutputStreamAfterMe()` |
    `protected abstract void` | `execute​(BufferInputStream in, BufferOutputStream out)` |
    `protected void` | `finishInputStream​(java.io.InputStream in)` |
    `protected void` | `finishOutputStream​(java.io.OutputStream out)` |
    `protected void` | `flush()` |
    `protected java.lang.String` | `getAdditionalInfo()` |
    `protected BufferInputStream` | `getBufferInputStream()` |
    `protected BufferOutputStream` | `getBufferOutputStream()` |
    `int` | `getCorrelationID()` |
    `protected java.io.InputStream` | `getCurrentInputStream()` |
    `protected java.io.OutputStream` | `getCurrentOutputStream()` |
    `short` | `getID()` | Returns the short integer ID of this signal that is unique among all signals of the associated `protocol`.
    `java.lang.String` | `getName()` |
    `SignalProtocol<?>` | `getProtocol()` |
    `void` | `run()` |
    `java.lang.String` | `toString()` |
    `protected java.io.InputStream` | `wrapInputStream​(java.io.InputStream in)` |
    `protected java.io.OutputStream` | `wrapOutputStream​(java.io.OutputStream out)` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### NO_TIMEOUT

          public static final long NO_TIMEOUT

      Since:
        2.0
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Signal

          public Signal​(SignalProtocol<?> protocol,
                        short id,
                        java.lang.String name)

      Both implementation classes of a logical signal must have the same signalID. The signalID of a user signals must be equal to or greater than zero.
      Since:
        2.0

    - #### Signal

          public Signal​(SignalProtocol<?> protocol,
                        short id)

      Since:
        2.0
      See Also:
        `Signal(SignalProtocol, short, String)`

    - #### Signal

          public Signal​(SignalProtocol<?> protocol,
                        java.lang.Enum<?> literal)

      Since:
        2.0
      See Also:
        `Signal(SignalProtocol, short, String)`

  - ### Method Detail

    - #### getProtocol

          public SignalProtocol<?> getProtocol()

    - #### getID

          public final short getID()

      Returns the short integer ID of this signal that is unique among all signals of the associated `protocol`.
      Since:
        2.0

    - #### getName

          public java.lang.String getName()

      Since:
        2.0

    - #### getCorrelationID

          public final int getCorrelationID()

      Since:
        2.0

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`
      Since:
        2.0

    - #### getAdditionalInfo

          protected java.lang.String getAdditionalInfo()

      Since:
        4.5

    - #### run

          public final void run()

      Specified by:
        `run` in interface `java.lang.Runnable`

    - #### getBufferInputStream

          protected final BufferInputStream getBufferInputStream()

    - #### getBufferOutputStream

          protected final BufferOutputStream getBufferOutputStream()

    - #### flush

          protected final void flush()
                              throws java.io.IOException

      Throws:
        `java.io.IOException`
      Since:
        2.0

    - #### closeChannelAfterMe

          protected boolean closeChannelAfterMe()

      Since:
        4.4

    - #### closeInputStreamAfterMe

          protected boolean closeInputStreamAfterMe()

      Since:
        4.5

    - #### closeOutputStreamAfterMe

          protected boolean closeOutputStreamAfterMe()

      Since:
        4.5

    - #### getCurrentInputStream

          protected java.io.InputStream getCurrentInputStream()

      Since:
        2.0

    - #### getCurrentOutputStream

          protected java.io.OutputStream getCurrentOutputStream()

      Since:
        2.0

    - #### wrapInputStream

          protected java.io.InputStream wrapInputStream​(java.io.InputStream in)
                                                 throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### wrapOutputStream

          protected java.io.OutputStream wrapOutputStream​(java.io.OutputStream out)
                                                   throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### finishInputStream

          protected void finishInputStream​(java.io.InputStream in)
                                    throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### finishOutputStream

          protected void finishOutputStream​(java.io.OutputStream out)
                                     throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### execute

          protected abstract void execute​(BufferInputStream in,
                                          BufferOutputStream out)
                                   throws java.lang.Exception

      Throws:
        `java.lang.Exception`