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…
Reference in New Issue