iotgateway/IoTGateway.ViewModel/MqttServer/MqttClientVMs/MqttClientListVM.cs
2024-01-08 22:18:16 +08:00

102 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using IoTGateway.Model;
using Microsoft.Extensions.Primitives;
using MQTTnet.Server;
using MQTTnet.Formatter;
namespace IoTGateway.ViewModel.MqttClient.MqttServerVMs
{
public partial class MqttClientListVM : BasePagedListVM<MqttClient_View, MqttClientSearcher>
{
protected override IEnumerable<IGridColumn<MqttClient_View>> InitGridHeader()
{
return new List<GridColumn<MqttClient_View>>{
this.MakeGridHeader(x => x.ClientId),
this.MakeGridHeader(x => x.Endpoint),
this.MakeGridHeader(x => x.ReceivedApplicationMessagesCount),
this.MakeGridHeader(x => x.SentApplicationMessagesCount),
this.MakeGridHeader(x => x.ReceivedPacketsCount),
this.MakeGridHeader(x => x.SentPacketsCount),
this.MakeGridHeader(x => x.BytesSent),
this.MakeGridHeader(x => x.BytesReceived),
this.MakeGridHeader(x => x.PendingApplicationMessagesCount),
this.MakeGridHeader(x => x.MqttProtocolVersion)
};
}
protected override void InitListVM()
{
base.InitListVM();
}
protected override void InitVM()
{
base.InitVM();
}
public override void AfterDoSearcher()
{
}
public override void DoSearch()
{
var mqttServer = Wtm.ServiceProvider.GetService(typeof(MqttServer)) as MqttServer;
foreach (var client in mqttServer.GetClientsAsync().Result)
{
MqttClient_View mqttClient_ = new MqttClient_View
{
ClientId = client.Id,
BytesReceived = client.BytesReceived,
BytesSent = client.BytesSent,
MqttProtocolVersion = client.ProtocolVersion,
ReceivedApplicationMessagesCount = client.ReceivedApplicationMessagesCount,
ReceivedPacketsCount = client.ReceivedPacketsCount,
SentApplicationMessagesCount = client.SentApplicationMessagesCount,
SentPacketsCount = client.SentPacketsCount,
PendingApplicationMessagesCount = client.Session.PendingApplicationMessagesCount
};
this.EntityList.Add(mqttClient_);
}
int i = 0;
}
}
public class MqttClient_View : TopBasePoco
{
[Display(Name = "ClientId")]
public string ClientId { get; set; }
[Display(Name = "Endpoint")]
public string Endpoint { get; set; }
[Display(Name = "RxMessages")]
public long ReceivedApplicationMessagesCount { get; set; }
[Display(Name = "TxMessages")]
public long SentApplicationMessagesCount { get; set; }
[Display(Name = "RxPackets")]
public long ReceivedPacketsCount { get; set; }
[Display(Name = "TxPackets")]
public long SentPacketsCount { get; set; }
[Display(Name = "TxBytes")]
public long BytesSent { get; set; }
[Display(Name = "RxBytes")]
public long BytesReceived { get; set; }
[Display(Name = "PendingMessage")]
public long PendingApplicationMessagesCount { get; set; }
[Display(Name = "ProtocolVersion")]
public MqttProtocolVersion MqttProtocolVersion { get; set; }
}
}