Пример #1
0
        public async Task <ResponseStatus> Subscribe(SubscriptionRequest request, ServerCallContext context)
        {
            var instance = await instanceSubscriptionRepository.GetInfoByNameAsync(request.InstanceName);

            if (instance == null)
            {
                await instanceSubscriptionRepository.AddAddressAsync(request.Endpoint, request.InstanceName, (ApplicationType)request.Target);
            }
            else if (instance.Address == request.Endpoint && instance.InstanceName != request.InstanceName)
            {
                return(new ResponseStatus());
            }
            else if (instance.Address != request.Endpoint && instance.Target != (ApplicationType)request.Target)
            {
                await instanceSubscriptionRepository.UpdateAddressAndStatusAsync(request);
            }
            else
            {
                await instanceSubscriptionRepository.UpdateStatusAsync(request.Endpoint, InstanceStatus.Alive);
            }

            return(new ResponseStatus());
        }