This repository has been archived on 2025-11-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AUTS_OLD/AUTS_DataService/UtsApp/UtsAppManager.vb
2024-03-11 16:34:21 +08:00

84 lines
2.5 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.
Public Class UtsAppManager
''' <summary>
''' 设备运行APP列表,键为APP名称值为App对象
''' </summary>
Private _appDic As Dictionary(Of String, UtsApp)
Private _clientDic As Dictionary(Of Net.Sockets.TcpClient, UtsApp)
Sub New()
_appDic = New Dictionary(Of String, UtsApp)
_clientDic = New Dictionary(Of Net.Sockets.TcpClient, UtsApp)
End Sub
Public Sub AddApp(app As UtsApp)
If _appDic.ContainsKey(app.Name) = False Then
_appDic.Add(app.Name, app)
End If
End Sub
''' <summary>
''' 判断App是否存在队列中
''' </summary>
''' <param name="appName"></param>
''' <returns></returns>
Public Function AppExists(appName As String) As Boolean
Return _appDic.ContainsKey(appName)
End Function
''' <summary>
''' 获取UtsApp对象没有则添加对象至队列后再返回
''' </summary>
''' <param name="appName"></param>
''' <returns></returns>
Public Function GetApp(appName As String) As UtsApp
Static lock As New Object
SyncLock lock
If _appDic.ContainsKey(appName) = False Then
ServiceLog.WriteDebugLog($"{appName} Add!")
_appDic.Add(appName, New UtsApp())
End If
End SyncLock
Return _appDic(appName)
End Function
''' <summary>
''' 获取当前App列表
''' </summary>
''' <returns></returns>
Public Function GetAllApps() As List(Of UtsApp)
Return _appDic.Values.ToList()
End Function
Public Function GetClientBindApp(client As Net.Sockets.TcpClient) As UtsApp
If _clientDic.ContainsKey(client) Then
Return _clientDic(client)
Else
Return Nothing
End If
End Function
Public Sub BindClientAndApp(client As Net.Sockets.TcpClient, app As UtsApp)
Static lock As New Object
SyncLock lock
If _clientDic.ContainsKey(client) = False Then
_clientDic.Add(client, app)
ServiceLog.WriteDebugLog($"{_clientDic(client).Name} Connect!")
End If
End SyncLock
End Sub
Public Sub CancelClientBind(client As Net.Sockets.TcpClient)
If _clientDic.ContainsKey(client) Then
ServiceLog.WriteDebugLog($"{_clientDic(client).Name} Disconnect!")
_clientDic(client).Status = UtsApp.AppStatus.Closed
_clientDic(client).Client = Nothing
_clientDic.Remove(client)
End If
End Sub
End Class