Package net.dona.doip.client.transport

# Interface DoipConnection

All Superinterfaces:
  `AutoCloseable`

All Known Implementing Classes:
  `DoipConnectionImpl`, `ReleaseOnceDoipConnection`

public interface DoipConnection extends AutoCloseable
A connection with a DOIP server. The user can send requests using the `sendCompactRequest(DoipRequestHeaders)`, `sendRequest(DoipRequestHeaders, InDoipMessage)`, and `sendRequestToExchange(DoipRequestHeaders)` methods. The user should call `close()` when done (except when obtained from a pool, in which case `DoipConnectionPool.release(DoipConnection)` should be called instead).

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  `boolean`
  `isClosed()`
  Returns true if the connection is closed.
  `DoipClientResponse`
  `sendCompactRequest(DoipRequestHeaders request)`
  Sends a "compact" request consisting of a single JSON segment, with the request "input" embedded in the initial segment.
  `DoipClientResponse`
  `sendRequest(DoipRequestHeaders request, InDoipMessage in)`
  Sends a request with the specified initial segment, and subsequent segments (the request "input") read from the supplied InDoipMessage.
  `DoipExchange`
  `sendRequestToExchange(DoipRequestHeaders request)`
  Sends a request using a specified initial segment, and providing a `DoipExchange` which allows writing additional segments as well as reading segments from the response.

- ## Method Details

  - ### isClosed

    boolean isClosed()
    Returns true if the connection is closed.
    Returns:
      true if the connection is closed

  - ### sendCompactRequest

    DoipClientResponse sendCompactRequest(DoipRequestHeaders request) throws IOException
    Sends a "compact" request consisting of a single JSON segment, with the request "input" embedded in the initial segment.
    Parameters:
      `request` - the single-segment "compact" request to be sent
    Returns:
      the response
    Throws:
      `IOException`

  - ### sendRequest

    DoipClientResponse sendRequest(DoipRequestHeaders request, InDoipMessage in) throws IOException
    Sends a request with the specified initial segment, and subsequent segments (the request "input") read from the supplied InDoipMessage.
    Parameters:
      `request` - the initial segment of the request (except the requestId which will be generated automatically)
      `in` - the remaining segments of the request
    Returns:
      the response
    Throws:
      `IOException`

  - ### sendRequestToExchange

    DoipExchange sendRequestToExchange(DoipRequestHeaders request) throws IOException
    Sends a request using a specified initial segment, and providing a `DoipExchange` which allows writing additional segments as well as reading segments from the response.
    Parameters:
      `request` - the initial segment of the request (except the requestId which will be generated automatically)
    Returns:
      an instance of `DoipExchange` which allows writing additional segments as well as reading segments from the response
    Throws:
      `IOException`

  - ### close

    void close()
    Specified by:
      `close` in interface `AutoCloseable`