Endpoint
A representation of a smithy operation.
- Type parameters:
- E:
the error ADT of the operation (Nothing if N/A)
- I:
the input type of the operation (Unit if N/A)
- O:
the output of the operation (Unit if N/A)
- Op:
the GADT of all operations in a service
- SI:
the Streamed input of the operaton (Nothing if N/A)
- SO:
the Streamed output of the operaton (Nothing if N/A) This type carries references to the Schemas of the various types involved, allowing to compile corresponding codecs. Optionally, an endpoint can have an
Errorable
which allows for matching throwables against the errors the operation knows about (which form an ADT in the Scala representation) NB : SI an SO respectively are derived from the @streaming trait in smithy. If this trait is present in one on one of the members of Input/Output, the member is removed from the Scala representation, in order to avoid polluting datatypes that typically fit in memory with concerns of streaming (which can be encoded a great many ways, using a greatt many libraries)