@FunctionalInterface public interface ServerServiceCall<Request,Response> extends ServiceCall<Request,Response>
invokeWithHeaders(RequestHeader, Object)should be called. Invocation of the former may result in an
UnsupportedOperationExceptionbeing 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|
Make any modifications necessary to the request header.
Transform the response using the given function that takes the response header and the response.
Invoke the given action with the request and response headers.
default CompletionStage<Pair<ResponseHeader,Response>> invokeWithHeaders(RequestHeader requestHeader, Request request)
requestHeader- The request header.
request- The request message.
default <T> ServerServiceCall<Request,T> handleResponseHeader(BiFunction<ResponseHeader,Response,T> handler)
default ServerServiceCall<Request,Response> handleRequestHeader(Function<RequestHeader,RequestHeader> handler)
RequestHeader.DEFAULTexists for this purpose. Generally, server implementations should not implement this method directly, rather, they should use ServerServiceCall, which provides an appropriate implementation.