Exemplo n.º 1
0
        public override Task <DeregisterEstopEndpointResponse> DeregisterEstopEndpoint(
            DeregisterEstopEndpointRequest request, ServerCallContext context)
        {
            EstopEndpointWithStatus foundEndpoint = null;

            foreach (var registeredEndpoint in SpotRobot.SpotInstance.RegisteredEndpointsByConfig)
            {
                if (registeredEndpoint.Endpoint.UniqueId == request.TargetEndpoint.UniqueId)
                {
                    foundEndpoint = registeredEndpoint;
                }
            }

            if (foundEndpoint != null)
            {
                Console.WriteLine(
                    $"DeregisterEstopEndpointRequest - removing endpoint: {foundEndpoint.Endpoint.UniqueId}");
                SpotRobot.SpotInstance.RegisteredEndpointsByConfig.Remove(foundEndpoint);
            }

            return(Task.FromResult(new DeregisterEstopEndpointResponse
            {
                Header = HeaderBuilder.Build(request.Header, new CommonError {
                    Code = CommonError.Types.Code.Ok
                }),
                Request = request,
                Status = foundEndpoint != null
                    ? DeregisterEstopEndpointResponse.Types.Status.Success
                    : DeregisterEstopEndpointResponse.Types.Status.EndpointMismatch
            }));
        }
Exemplo n.º 2
0
        public override Task <RegisterEstopEndpointResponse> RegisterEstopEndpoint(RegisterEstopEndpointRequest request,
                                                                                   ServerCallContext context)
        {
            EstopEndpointWithStatus foundEndpoint = null;
            EstopEndpointWithStatus newEndpoint   = null;

            foreach (var registeredEndpoint in SpotRobot.SpotInstance.RegisteredEndpointsByConfig)
            {
                if (registeredEndpoint.Endpoint.UniqueId == request.TargetEndpoint.UniqueId)
                {
                    foundEndpoint = registeredEndpoint;
                    Console.WriteLine(
                        $"RegisterEstopEndpoint - endpoint allready exists: {registeredEndpoint.Endpoint.UniqueId}");
                }
            }

            if (foundEndpoint == null)
            {
                newEndpoint = new EstopEndpointWithStatus
                {
                    Endpoint  = new EstopEndpoint(request.NewEndpoint),
                    StopLevel = EstopStopLevel.EstopLevelSettleThenCut
                };
                Console.WriteLine($"RegisterEstopEndpoint - adding new endpoint: {newEndpoint.Endpoint.UniqueId}");
                SpotRobot.SpotInstance.RegisteredEndpointsByConfig.Add(newEndpoint);
            }

            return(Task.FromResult(new RegisterEstopEndpointResponse
            {
                Header = HeaderBuilder.Build(request.Header, new CommonError {
                    Code = CommonError.Types.Code.Ok
                }),
                Status = RegisterEstopEndpointResponse.Types.Status.Success,
                Request = request,
                NewEndpoint = (foundEndpoint ?? newEndpoint).Endpoint
            }));
        }