Merge branch 'DroneConnectionFix' into 'main'
Drone connection fix See merge request kzotkin/hiveemulator!5
This commit is contained in:
		
						commit
						17ceed960e
					
				@ -1,4 +1,4 @@
 | 
				
			|||||||
using DevOpsProject.CommunicationControl.Logic.Services.Interfaces;
 | 
					using DevOpsProject.CommunicationControl.Logic.Services.Interfaces;
 | 
				
			||||||
using DevOpsProject.Shared.Clients;
 | 
					using DevOpsProject.Shared.Clients;
 | 
				
			||||||
using DevOpsProject.Shared.Configuration;
 | 
					using DevOpsProject.Shared.Configuration;
 | 
				
			||||||
using DevOpsProject.Shared.Enums;
 | 
					using DevOpsProject.Shared.Enums;
 | 
				
			||||||
@ -65,19 +65,40 @@ namespace DevOpsProject.CommunicationControl.Logic.Services
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        public async Task<HiveOperationalArea> ConnectHive(HiveModel model)
 | 
					        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);
 | 
					            bool result = await _redisService.SetAsync(GetHiveKey(model.HiveID), model);
 | 
				
			||||||
            if (result)
 | 
					            if (result)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                _logger.LogInformation("Successfully connected Hive: {@model}", model);
 | 
					                _logger.LogInformation("Successfully connected Hive: {@model}", model);
 | 
				
			||||||
                var operationalArea = _spatialService.GetHiveOperationalArea(model);
 | 
					                var operationalArea = _spatialService.GetHiveOperationalArea(model);
 | 
				
			||||||
                await _messageBus.Publish(new HiveConnectedMessage
 | 
					                if (isHiveAlreadyConnected)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    HiveID = model.HiveID,
 | 
					                    await _messageBus.Publish(new HiveReconnectedMessage
 | 
				
			||||||
                    Hive = model,
 | 
					                    {
 | 
				
			||||||
                    InitialOperationalArea = operationalArea,
 | 
					                        HiveID = model.HiveID,
 | 
				
			||||||
                    IsSuccessfullyConnected = result
 | 
					                        Hive = model,
 | 
				
			||||||
                });
 | 
					                        InitialOperationalArea = operationalArea,
 | 
				
			||||||
 | 
					                        IsSuccessfullyReconnected = result
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    await _messageBus.Publish(new HiveConnectedMessage
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        HiveID = model.HiveID,
 | 
				
			||||||
 | 
					                        Hive = model,
 | 
				
			||||||
 | 
					                        InitialOperationalArea = operationalArea,
 | 
				
			||||||
 | 
					                        IsSuccessfullyConnected = result
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                return operationalArea;
 | 
					                return operationalArea;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					            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
 | 
					                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 hiveOperationalArea = await _communicationControlService.ConnectHive(hiveModel);
 | 
				
			||||||
            var connectResponse = new HiveConnectResponse
 | 
					            var connectResponse = new HiveConnectResponse
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user