private void doSendMessage(O message) {
        if (isCancelled()) {
            // call was already closed by a client or a timeout scheduler
            return;
        }
        checkState(responseHeaders() != null, "sendHeaders has not been called");
        checkState(responseMessage == null, "responseMessage is set already");
        checkState(!isCloseCalled(), "call is closed");
        responseMessage = message;
    }
Encapsulates the state of a single server call, reading messages from the client, passing to business logic
via {@link Listener}, and writing messages passed back to the response.
grpc/src/main/java/com/linecorp/armeria/server/grpc/UnaryServerCall.java