Merge branch 'main' of https://gitlab.com/kzotkin/hiveemulator
This commit is contained in:
		
						commit
						4df4437487
					
				@ -1,4 +1,4 @@
 | 
			
		||||
using DevOpsProject.CommunicationControl.Logic.Services.Interfaces;
 | 
			
		||||
using DevOpsProject.CommunicationControl.Logic.Services.Interfaces;
 | 
			
		||||
using DevOpsProject.Shared.Clients;
 | 
			
		||||
using DevOpsProject.Shared.Configuration;
 | 
			
		||||
using DevOpsProject.Shared.Enums;
 | 
			
		||||
@ -65,19 +65,40 @@ namespace DevOpsProject.CommunicationControl.Logic.Services
 | 
			
		||||
 | 
			
		||||
        public async Task<HiveOperationalArea> ConnectHive(HiveModel model)
 | 
			
		||||
        {
 | 
			
		||||
            _logger.LogInformation("Trying to connect Hive: {@model}", model);
 | 
			
		||||
            bool isHiveAlreadyConnected = await IsHiveConnected(model.HiveID);
 | 
			
		||||
            if (isHiveAlreadyConnected)
 | 
			
		||||
            {
 | 
			
		||||
                _logger.LogWarning("Reconnect Hive request: {@model}", model);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                _logger.LogInformation("Trying to connect Hive: {@model}", model);
 | 
			
		||||
            }
 | 
			
		||||
            bool result = await _redisService.SetAsync(GetHiveKey(model.HiveID), model);
 | 
			
		||||
            if (result)
 | 
			
		||||
            {
 | 
			
		||||
                _logger.LogInformation("Successfully connected Hive: {@model}", model);
 | 
			
		||||
                var operationalArea = _spatialService.GetHiveOperationalArea(model);
 | 
			
		||||
                await _messageBus.Publish(new HiveConnectedMessage
 | 
			
		||||
                if (isHiveAlreadyConnected)
 | 
			
		||||
                {
 | 
			
		||||
                    HiveID = model.HiveID,
 | 
			
		||||
                    Hive = model,
 | 
			
		||||
                    InitialOperationalArea = operationalArea,
 | 
			
		||||
                    IsSuccessfullyConnected = result
 | 
			
		||||
                });
 | 
			
		||||
                    await _messageBus.Publish(new HiveReconnectedMessage
 | 
			
		||||
                    {
 | 
			
		||||
                        HiveID = model.HiveID,
 | 
			
		||||
                        Hive = model,
 | 
			
		||||
                        InitialOperationalArea = operationalArea,
 | 
			
		||||
                        IsSuccessfullyReconnected = result
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    await _messageBus.Publish(new HiveConnectedMessage
 | 
			
		||||
                    {
 | 
			
		||||
                        HiveID = model.HiveID,
 | 
			
		||||
                        Hive = model,
 | 
			
		||||
                        InitialOperationalArea = operationalArea,
 | 
			
		||||
                        IsSuccessfullyConnected = result
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
                return operationalArea;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,16 @@
 | 
			
		||||
using DevOpsProject.Shared.Models;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace DevOpsProject.Shared.Messages
 | 
			
		||||
{
 | 
			
		||||
    public class HiveReconnectedMessage : BaseMessage
 | 
			
		||||
    {
 | 
			
		||||
        public bool IsSuccessfullyReconnected { get; set; }
 | 
			
		||||
        public HiveModel Hive { get; set; }
 | 
			
		||||
        public HiveOperationalArea InitialOperationalArea { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -30,13 +30,6 @@ namespace DevOpsProject.CommunicationControl.API.Controllers
 | 
			
		||||
                HiveSchema = request.HiveSchema
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            bool isConnected = await _communicationControlService.IsHiveConnected(request.HiveID);
 | 
			
		||||
            if (isConnected)
 | 
			
		||||
            {
 | 
			
		||||
                _logger.LogError("Hive with HiveID: {hiveId} already connected. Request: {@request}", request.HiveID, request);
 | 
			
		||||
                return BadRequest($"Hive with HiveID: {request.HiveID} already connected");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var hiveOperationalArea = await _communicationControlService.ConnectHive(hiveModel);
 | 
			
		||||
            var connectResponse = new HiveConnectResponse
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user