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 })); }
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 })); }