@FunctionalInterface public interface ServerServiceCall<Request,Response> extends ServiceCall<Request,Response>
ServiceCall.invoke(Object)
, rather,
invokeWithHeaders(RequestHeader, Object)
should be called. Invocation of the former may result in
an UnsupportedOperationException
being thrown.
In some cases, where the underlying transport doesn't allow sending a header after the request message has been
received (eg WebSockets), the response header may be ignored. In these cases, Lagom will make a best effort attempt
at determining whether there was custom information in the response header, and if so, log a warning that it wasn't
set.
As this is a functional interface, it is generally advised that you implement it using a lambda.
If you want to actually handle the headers in a service call, it is recommended that rather than implementing this
interface, you use HeaderServiceCall
, which makes the
invokeWithHeaders(RequestHeader, Object)
method abstract so that it can be implemented with a
lambda.Modifier and Type | Method and Description |
---|---|
default ServerServiceCall<Request,Response> |
handleRequestHeader(java.util.function.Function<RequestHeader,RequestHeader> handler)
Make any modifications necessary to the request header.
|
default <T> ServerServiceCall<Request,T> |
handleResponseHeader(java.util.function.BiFunction<ResponseHeader,Response,T> handler)
Transform the response using the given function that takes the response header and the response.
|
default java.util.concurrent.CompletionStage<akka.japi.Pair<ResponseHeader,Response>> |
invokeWithHeaders(RequestHeader requestHeader,
Request request)
Invoke the given action with the request and response headers.
|
invoke, invoke, withResponseHeader
default java.util.concurrent.CompletionStage<akka.japi.Pair<ResponseHeader,Response>> invokeWithHeaders(RequestHeader requestHeader, Request request)
requestHeader
- The request header.request
- The request message.default <T> ServerServiceCall<Request,T> handleResponseHeader(java.util.function.BiFunction<ResponseHeader,Response,T> handler)
ServiceCall
handleResponseHeader
in interface ServiceCall<Request,Response>
handler
- The handler.default ServerServiceCall<Request,Response> handleRequestHeader(java.util.function.Function<RequestHeader,RequestHeader> handler)
ServiceCall
RequestHeader.DEFAULT
exists for this
purpose. Generally, server implementations should not implement this method directly, rather, they should use
ServerServiceCall, which provides an appropriate implementation.handleRequestHeader
in interface ServiceCall<Request,Response>
handler
- A function that takes in the request header representing the request, and transforms it.