private void invoke(
            ServiceRequestContext ctx,
            Object impl, ThriftFunction func, List<Object> args, CompletableRpcResponse reply) {

        try {
            final TBase<?, ?> tArgs = func.newArgs(args);
            if (func.isAsync()) {
                if (useBlockingTaskExecutor) {
                    ctx.blockingTaskExecutor().execute(() -> {
                        try {
                            invokeAsynchronously(impl, func, tArgs, reply);
                        } catch (Throwable t) {
                            reply.completeExceptionally(t);
                        }
                    });
                } else {
                    invokeAsynchronously(impl, func, tArgs, reply);
                }
            } else {
                invokeSynchronously(ctx, impl, func, tArgs, reply);
            }
        } catch (Throwable t) {
            reply.completeExceptionally(t);
        }
    }
Returns the information about the Thrift services being served.

@return a {@link Map} whose key is a service name, which could be an empty string if this service
        is not multiplexed
thrift/thrift0.13/src/main/java/com/linecorp/armeria/server/thrift/ThriftCallService.java