public static Overlaps CalculateOverlaps(
            RemoveOverlapsGrpc.RemoveOverlapsGrpcClient rpcClient,
            [NotNull] IList <Feature> selectedFeatures,
            [NotNull] IList <Feature> overlappingFeatures,
            CancellationToken cancellationToken)
        {
            CalculateOverlapsResponse response =
                CalculateOverlapsRpc(rpcClient, selectedFeatures, overlappingFeatures,
                                     cancellationToken);

            if (response == null || cancellationToken.IsCancellationRequested)
            {
                return(null);
            }

            var result = new Overlaps();

            foreach (OverlapMsg overlapMsg in response.Overlaps)
            {
                GdbObjectReference gdbObjRef = new GdbObjectReference(
                    overlapMsg.OriginalFeatureRef.ClassHandle,
                    overlapMsg.OriginalFeatureRef.ObjectId);

                List <Geometry> overlapGeometries =
                    ProtobufConversionUtils.FromShapeMsgList(overlapMsg.Overlaps);

                result.AddGeometries(gdbObjRef, overlapGeometries);
            }

            result.Notifications.AddRange(
                response.Notifications.Select(n => new Notification(n)));

            return(result);
        }
        private static CalculateOverlapsResponse CalculateOverlapsRpc(
            RemoveOverlapsGrpc.RemoveOverlapsGrpcClient rpcClient,
            IList <Feature> selectedFeatures,
            IList <Feature> overlappingFeatures,
            CancellationToken cancellationToken)
        {
            CalculateOverlapsRequest request =
                CreateCalculateOverlapsRequest(selectedFeatures, overlappingFeatures);

            CalculateOverlapsResponse response;

            try
            {
                response = rpcClient.CalculateOverlaps(request, null, null,
                                                       cancellationToken);
            }
            catch (Exception e)
            {
                _msg.Debug($"Error calling remote procedure: {e.Message} ", e);

                throw;
            }

            return(response);
        }
        public static RemoveOverlapsResult RemoveOverlaps(
            RemoveOverlapsGrpc.RemoveOverlapsGrpcClient rpcClient,
            IEnumerable <Feature> selectedFeatures,
            Overlaps overlapsToRemove,
            IList <Feature> overlappingFeatures,
            CancellationToken cancellationToken)
        {
            List <Feature>        updateFeatures;
            RemoveOverlapsRequest request = CreateRemoveOverlapsRequest(
                selectedFeatures, overlapsToRemove, overlappingFeatures,
                out updateFeatures);

            RemoveOverlapsResponse response =
                rpcClient.RemoveOverlaps(request, null, null, cancellationToken);

            return(GetRemoveOverlapsResult(response, updateFeatures));
        }
        private static CalculateOverlapsResponse CalculateOverlapsRpc(
            RemoveOverlapsGrpc.RemoveOverlapsGrpcClient rpcClient,
            IList <Feature> selectedFeatures,
            IList <Feature> overlappingFeatures,
            CancellationToken cancellationToken)
        {
            CalculateOverlapsRequest request =
                CreateCalculateOverlapsRequest(selectedFeatures, overlappingFeatures);

            int maxTimePerFeature = 4000;

            CalculateOverlapsResponse response =
                RpcCallUtils.Try(
                    o => rpcClient.CalculateOverlaps(request, o),
                    cancellationToken, maxTimePerFeature * selectedFeatures.Count);

            return(response);
        }
 protected override void ChannelOpenedCore(Channel channel)
 {
     RemoveOverlapsClient = new RemoveOverlapsGrpc.RemoveOverlapsGrpcClient(channel);
     ChangeAlongClient    = new ChangeAlongGrpc.ChangeAlongGrpcClient(channel);
     ReshapeClient        = new ReshapeGrpc.ReshapeGrpcClient(channel);
 }
Esempio n. 6
0
 protected override void ChannelOpenedCore(Channel channel)
 {
     RemoveOverlapsClient = new RemoveOverlapsGrpc.RemoveOverlapsGrpcClient(channel);
 }