42 lines
1.8 KiB
C#
42 lines
1.8 KiB
C#
using Microsoft.AspNetCore.SignalR.Client;
|
|
using OpenIddict.Client;
|
|
using RobotNet.MapShares.Dtos;
|
|
using RobotNet.Shares;
|
|
|
|
namespace RobotNet.RobotManager.HubClients;
|
|
|
|
public class MapHubClient(IHttpClientFactory HttpFactory, OpenIddictClientService openIddictClient)
|
|
: OpenIddictHubClient(new Uri($"{HttpFactory.CreateClient("MapManagerAPI").BaseAddress}hubs/map/data").ToString(), openIddictClient, ["robotnet-map-api"])
|
|
{
|
|
public event Action<Guid>? MapUpdated;
|
|
private IDisposable? disMapUpdated;
|
|
|
|
|
|
new public async Task StartAsync()
|
|
{
|
|
disMapUpdated = Connection.On<Guid>("MapUpdated", mapId => MapUpdated?.Invoke(mapId));
|
|
|
|
await base.StartAsync();
|
|
}
|
|
|
|
new public async Task StopAsync()
|
|
{
|
|
if (disMapUpdated != null)
|
|
{
|
|
disMapUpdated.Dispose();
|
|
disMapUpdated = null;
|
|
}
|
|
await base.StopAsync();
|
|
}
|
|
|
|
public async Task<MessageResult<MapDataDto>> GetMapData(Guid mapId)
|
|
=> IsConnected ? await Connection.InvokeAsync<MessageResult<MapDataDto>>(nameof(GetMapData), mapId) : new(false, "Kết nối thất bại");
|
|
|
|
public async Task<MessageResult<ElementDto[]>> GetElementsState(Guid mapId)
|
|
=> IsConnected ? await Connection.InvokeAsync<MessageResult<ElementDto[]>>(nameof(GetElementsState), mapId) : new(false, "Kết nối thất bại");
|
|
public async Task<MessageResult<MapInfoDto>> GetMapInfoByName(string name)
|
|
=> IsConnected ? await Connection.InvokeAsync<MessageResult<MapInfoDto>>(nameof(GetMapInfoByName), name) : new(false, "Kết nối thất bại");
|
|
public async Task<MessageResult<MapInfoDto>> GetMapInfoById(Guid mapId)
|
|
=> IsConnected ? await Connection.InvokeAsync<MessageResult<MapInfoDto>>(nameof(GetMapInfoById), mapId) : new(false, "Kết nối thất bại");
|
|
}
|