public override async Task <ShapeMsg> GetOpenJawReshapeLineReplaceEndPoint(
            OpenJawReshapeLineReplacementRequest request,
            ServerCallContext context)
        {
            Func <ITrackCancel, ShapeMsg> func =
                trackCancel => AdvancedReshapeServiceUtils.GetOpenJawReshapeReplaceEndPoint(
                    request, trackCancel);

            ShapeMsg response =
                await GrpcServerUtils.ExecuteServiceCall(func, context, _staTaskScheduler, true) ??
                new ShapeMsg();

            return(response);
        }
        public override async Task <AdvancedReshapeResponse> AdvancedReshape(
            AdvancedReshapeRequest request, ServerCallContext context)
        {
            Stopwatch watch = _msg.DebugStartTiming();

            Func <ITrackCancel, AdvancedReshapeResponse> func =
                trackCancel => AdvancedReshapeServiceUtils.Reshape(request);

            AdvancedReshapeResponse response =
                await GrpcServerUtils.ExecuteServiceCall(func, context, _staTaskScheduler, true) ??
                new AdvancedReshapeResponse();

            _msg.DebugStopTiming(watch, "Reshaped for peer {0} ({1} source features)",
                                 context.Peer, request.Features.Count);

            return(response);
        }