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