private static void invokeSynchronously(
            ServiceRequestContext ctx, Object impl,
            ThriftFunction func, TBase<?, ?> args, CompletableRpcResponse reply) {

        final ProcessFunction<Object, TBase<?, ?>> f = func.syncFunc();
        ctx.blockingTaskExecutor().execute(() -> {
            if (reply.isDone()) {
                // Closed already most likely due to timeout.
                return;
            }

            try {
                if (func.isOneWay()) {
                    reply.complete(null);
                    f.getResult(impl, args);
                } else {
                    final TBase<?, ?> result = f.getResult(impl, args);
                    reply.complete(func.getResult(result));
                }
            } catch (Throwable t) {
                if (func.isOneWay()) {
                    reply.complete(null);
                    logOneWayFunctionFailure(ctx, t);
                } else {
                    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