Sic.Framework-Nanjing-Baishi/MECF.Framework.Common/MECF/Framework/Common/Communications/ConnectionManager.cs

75 lines
1.7 KiB
C#
Raw Normal View History

2023-04-13 11:51:03 +08:00
using System.Collections.Generic;
using Aitex.Core.RT.DataCenter;
using Aitex.Core.RT.OperationCenter;
using Aitex.Core.Util;
namespace MECF.Framework.Common.Communications
{
public class ConnectionManager : Singleton<ConnectionManager>
{
private Dictionary<string, IConnection> _dicConnections = new Dictionary<string, IConnection>();
private List<NotifiableConnectionItem> _connections = new List<NotifiableConnectionItem>();
public List<NotifiableConnectionItem> ConnectionList
{
get
{
foreach (NotifiableConnectionItem connection in _connections)
{
connection.IsConnected = _dicConnections[connection.Name].IsConnected;
}
return _connections;
}
}
public void Initialize()
{
OP.Subscribe("Connection.Connect", delegate(string cmd, object[] args)
{
Connect((string)args[0]);
return true;
});
OP.Subscribe("Connection.Disconnect", delegate(string cmd, object[] args)
{
Disconnect((string)args[0]);
return true;
});
DATA.Subscribe("Connection.List", () => ConnectionList);
}
public void Terminate()
{
}
public void Subscribe(string name, IConnection conn)
{
if (!string.IsNullOrEmpty(name) && conn != null)
{
_connections.Add(new NotifiableConnectionItem
{
Address = conn.Address,
Name = name
});
_dicConnections[name] = conn;
}
}
public void Connect(string name)
{
if (_dicConnections.ContainsKey(name) && _dicConnections[name] != null)
{
_dicConnections[name].Connect();
}
}
public void Disconnect(string name)
{
if (_dicConnections.ContainsKey(name) && _dicConnections[name] != null)
{
_dicConnections[name].Disconnect();
}
}
}
}