mirror of
https://github.com/snltty/linker.git
synced 2025-10-05 17:16:56 +08:00
62 lines
2.1 KiB
C#
62 lines
2.1 KiB
C#
using linker.libs.api;
|
|
using linker.libs.extends;
|
|
using linker.messenger.relay.client;
|
|
using linker.messenger.relay.client.transport;
|
|
using linker.messenger.relay.server;
|
|
|
|
namespace linker.messenger.relay
|
|
{
|
|
/// <summary>
|
|
/// 中继管理接口
|
|
/// </summary>
|
|
public sealed class RelayApiController : IApiController
|
|
{
|
|
private readonly RelayClientTestTransfer relayTestTransfer;
|
|
private readonly RelayClientTransfer relayTransfer;
|
|
private readonly IRelayClientStore relayClientStore;
|
|
|
|
public RelayApiController(RelayClientTestTransfer relayTestTransfer, RelayClientTransfer relayTransfer, IRelayClientStore relayClientStore)
|
|
{
|
|
this.relayTestTransfer = relayTestTransfer;
|
|
this.relayTransfer = relayTransfer;
|
|
this.relayClientStore = relayClientStore;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置中继协议
|
|
/// </summary>
|
|
/// <param name="param"></param>
|
|
/// <returns></returns>
|
|
public bool SetServers(ApiControllerParamsInfo param)
|
|
{
|
|
RelayServerInfo info = param.Content.DeJson<RelayServerInfo>();
|
|
relayClientStore.SetServer(info);
|
|
return true;
|
|
}
|
|
|
|
public List<RelayServerNodeReportInfo> Subscribe(ApiControllerParamsInfo param)
|
|
{
|
|
relayTestTransfer.Subscribe();
|
|
return relayTestTransfer.Nodes;
|
|
}
|
|
|
|
public bool Connect(ApiControllerParamsInfo param)
|
|
{
|
|
RelayConnectInfo relayConnectInfo = param.Content.DeJson<RelayConnectInfo>();
|
|
_ = relayTransfer.ConnectAsync(relayConnectInfo.FromMachineId, relayConnectInfo.ToMachineId, relayConnectInfo.TransactionId, relayConnectInfo.NodeId);
|
|
relayClientStore.SetDefaultNodeId(relayConnectInfo.NodeId);
|
|
return true;
|
|
}
|
|
|
|
}
|
|
|
|
public sealed class RelayConnectInfo
|
|
{
|
|
public string FromMachineId { get; set; }
|
|
public string ToMachineId { get; set; }
|
|
public string TransactionId { get; set; }
|
|
public string NodeId { get; set; }
|
|
}
|
|
|
|
}
|