Files
AUTS_Desktop_Prod/AUTS_DataService/UtsGroup/ServiceGroupManager.vb
MomoWen 027d0f8024 初始化提交
仓库转移到Gitea,初始化提交,可能丢失以前的git版本日志
2025-11-27 16:41:05 +08:00

116 lines
3.2 KiB
VB.net
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Imports System.Text
Public Class ServiceGroupManager
''' <summary>历史通讯数据服务集合</summary>
Private _groupService As Dictionary(Of Integer, OtherService)
Sub New()
_groupService = New Dictionary(Of Integer, OtherService)
End Sub
''' <summary>
''' 添加网上邻居,已存在则更新存活时间与状态
''' </summary>
''' <param name="other"></param>
Public Sub Add(other As OtherService)
If _groupService.ContainsKey(other.ServiceIndex) Then
_groupService(other.ServiceIndex).LastTime = Now
_groupService(other.ServiceIndex).IsAlive = True
Else
_groupService.Add(other.ServiceIndex, other)
End If
End Sub
''' <summary>
''' 校验其他服务的当前发送包索引是否与上一包索引重复相同返回True不相同返回False
''' </summary>
''' <returns></returns>
Public Function CheckServiceSendIndex(serviceId As Integer, sendId As Integer) As Boolean
If _groupService.ContainsKey(serviceId) Then
If _groupService(serviceId).LastPacketIndex = sendId Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
''' <summary>
''' 校验服务是否存活
''' </summary>
Public Sub CheckAliveService()
For Each other As KeyValuePair(Of Integer, OtherService) In _groupService
If (Now - other.Value.LastTime).TotalSeconds > 30 Then
other.Value.IsAlive = False
End If
Next
End Sub
''' <summary>
''' 获取存活状态的所有网上邻居的索引字符串,以逗号分割
''' </summary>
''' <returns></returns>
Public Function GetAliveServiceIndexString() As String
'排序后输出
Dim sb As New StringBuilder
Dim bt() As Integer = _groupService.Keys.ToArray()
Array.Sort(bt)
For i As Integer = 0 To bt.Length - 1
If _groupService(bt(i)).IsAlive = False Then Continue For
If sb.Length = 0 Then
sb.Append(bt(i))
Else
sb.Append("," & bt(i))
End If
Next
Return sb.ToString
'原来的顺序输出
'For Each other As KeyValuePair(Of Integer, OtherService) In _groupService
' If other.Value.IsAlive = False Then Continue For
' If sb.Length = 0 Then
' sb.Append(other.Key)
' Else
' sb.Append("," & other.Key)
' End If
'Next
End Function
End Class
Public Class OtherService
Sub New(index As Integer, packetIndex As Integer)
ServiceIndex = index
LastPacketIndex = packetIndex
LastTime = Now
IsAlive = True
End Sub
''' <summary>
''' 最后通讯时间
''' </summary>
Public Property LastTime As DateTime
''' <summary>
''' 最后通讯包ID
''' </summary>
Public Property LastPacketIndex As Integer
''' <summary>
''' 服务索引
''' </summary>
Public Property ServiceIndex As Integer
''' <summary>
''' 是否判定为在线
''' </summary>
Public Property IsAlive As Boolean
End Class